当前位置:   article > 正文

【Docker】docker常用命令_docker的常用命令有哪些?

docker的常用命令有哪些?


需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。


目录

一、镜像仓库架构图

二、docker仓库命令

1、登录仓库docker login

2、拉取镜像docker pull

3、推送镜像docker push

4、查找镜像docker search

5、登出仓库docker logout

三、docker镜像命令

1、列出本地镜像docker images

2、查看镜像详细信息docker image inspect

3、标记本地镜像,将其归入某一仓库docker tag

4、删除镜像docker rmi/删除容器docker rm

5、将指定的镜像打包成tar文件docker save

6、将docker save的tar包还原回来docker load

7、显示镜像历史docker history

8、删除不使用的镜像docker image prune

四、容器命令

1、创建一个新容器并运行一个命令docker run/创建一个新容器但不运行docker create(命令和docker run一样,docker run多一个-d选项)

-i、-t、-d选项:-it搭配使用,-d后台运行

-p选项:指定端口映射

--name选项:在容器启动时为它取一个名字

--cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定 CPU 运行

-m :设置容器使用内存最大值(示例为500m)

--link=[]: 添加链接到另一个容器,让两个容器能相互访问

--rm :shell 退出的时候自动删除容器

2、列出容器docker ps

3、查看容器日志docker logs

4、将当前终端连接到正在运行的某个Docker容器的标准输入、输出和错误docker attach

5、在容器中执行命令docker exec

6、将停止的容器重新启动docker start/将运行的容器停止docker stop

7、重启容器docker restart

8、强制退出容器docker kill

9、查看容器中运行的进程信息docker top

10、显示容器资源的使用情况docker stats

11、查看容器详细信息docker container inspect

12、查看指定容器所对外映射端口docker port

13、在容器和宿主机之间拷贝文件docker cp

14、 检查容器中文件结构的更改docker diff

15、从容器中创建一个新的自定义镜像docker commit

16、暂停/取消暂停容器中的所有进程docker pause/docker unpause

17、导出容器内容为tar包docker export/将导出的tar包还原为镜像docker import

18、阻塞运行直到容器停止,并打印退出码docker wait

19、容器重命名docker rename

20、删除所有停止的容器docker container prune

21、更新容器配置docker update

五、nginx

六、busybox


一、镜像仓库架构图

镜像仓库:存放镜像的仓库,每个镜像仓库包含多个tag标签

tag标签:每个标签对应一个镜像

二、docker仓库命令

docker指南:Docker Docs

docker官方仓库:https://hub.docker.com/

命令

别名

功能

docker login

登录仓库

docker pull

docker image pull

拉取镜像

docker push

docker image push

推送镜像

docker search

查找镜像

docker logout

登出仓库

1、登录仓库docker login

  1. sudo docker login
  2. sudo docker login -u jianglingyu

2、拉取镜像docker pull

从镜像仓库拉取或更新指定镜像

  1. sudo docker pull nginx:1.23.4-perl
  2. sudo docker pull nginx@sha256:55ef01aae23f582e98d9e91075caa0c96d9c2f2754d24cb0f2be5ca26620a212

3、推送镜像docker push

  1. # 先改一个tag
  2. sudo docker tag nginx:1.23.4-perl jianglingyu/test_repository:666
  3. sudo docker push jianglingyu/test_repository:666

4、查找镜像docker search

一般去hub.docker.com网站里找,较少使用命令。

  1. sudo docker search nginx
  2. # 查找星数大于10的nginx
  3. sudo docker search -f stars=10 nginx

5、登出仓库docker logout

sudo docker logout

三、docker镜像命令

1、列出本地镜像docker images

  1. sudo docker images
  2. # 查找带有nginx相关的镜像
  3. sudo docker images nginx
  4. sudo docker images nginx:1.23.4-perl # 冒号后面必须输入完整
  5. # 顺带显示sha256摘要信息
  6. sudo docker images --digests
  7. # -f代表过滤,比jianglingyu/test_repository:666早创建的镜像
  8. sudo docker images -f before=jianglingyu/test_repository:666

2、查看镜像详细信息docker image inspect

sudo docker image inspect jianglingyu/test_repository:666

比如启动nginx容器,就可以通过该命令查看nginx的启动方式(Cmd字段)和端口(ExposedPorts字段)

3、标记本地镜像,将其归入某一仓库docker tag

和docker push配合使用

  1. sudo docker tag nginx:1.23.4-perl jianglingyu/test_repository:666
  2. # 或者使用image id进行打标签
  3. sudo docker tag 15578d966674 jianglingyu/test_repository:666
  4. # 推送
  5. sudo docker push jianglingyu/test_repository:666

4、删除镜像docker rmi/删除容器docker rm

  1. sudo docker rmi hub.c.163.com/library/tomcat:latest
  2. sudo docker rmi -f hub.c.163.com/library/tomcat:latest # 强制删除
  3. # 删除镜像时,存在引用
  4. [jly@VM-4-6-centos ~]$ sudo docker rmi hello-world:latest
  5. Error response from daemon: conflict: unable to remove repository reference "hello-world:latest" (must force) - container 2e4b11735cb5 is using its referenced image d2c94e258dcb
  6. [jly@VM-4-6-centos ~]$ sudo docker rm 2e4b11735cb5 # 移除容器
  7. 2e4b11735cb5
  8. [jly@VM-4-6-centos ~]$ sudo docker rmi hello-world:latest
  9. Untagged: hello-world:latest
  10. Untagged: hello-world@sha256:4bd78111b6914a99dbc560e6a20eab57ff6655aea4a80c50b0c5491968cbc2e6
  11. Deleted: sha256:d2c94e258dcb3c5ac2798d32e1249e42ef01cba4841c2234249495f87264ac5a
  12. Deleted: sha256:ac28800ec8bb38d5c35b49d45a6ac4777544941199075dff8c4eb63e093aa81e

5、将指定的镜像打包成tar文件docker save

  1. # 打包成tar
  2. [jly@VM-4-6-centos busybox]$ sudo docker save -o busybox.tar busybox:1.36
  3. [jly@VM-4-6-centos busybox]$ ls
  4. busybox.tar
  5. # 将多个镜像一起打包成tar
  6. [jly@VM-4-6-centos busybox]$ sudo docker save -o busyboxs.tar busybox:1.36 ccr.ccs.tencentyun.com/jianglingyu/my_busybox:V1.1
  7. [jly@VM-4-6-centos busybox]$ ls
  8. busyboxs.tar busybox.tar

6、将docker save的tar包还原回来docker load

sudo docker load -i busyboxs.tar -q # -q精简信息,不加q显示还原进度

两台服务器之间通过ssh传输文件scp myfile root@xxx.xxx.xxx.xxx:/filepath

7、显示镜像历史docker history

docker history显示每个层(layer)的创建者、创建时间、大小等信息。

  1. [jly@VM-4-6-centos busybox]$ sudo docker history busybox:1.36
  2. IMAGE CREATED CREATED BY SIZE COMMENT
  3. 3f57d9401f8d 2 weeks ago CMD ["sh"] 0B buildkit.dockerfile.v0
  4. <missing> 2 weeks ago ADD busybox.tar.xz / # buildkit 4.26MB buildkit.dockerfile.v0

8、删除不使用的镜像docker image prune

  1. [jly@VM-4-6-centos busybox]$ sudo docker image prune
  2. WARNING! This will remove all dangling images.
  3. Are you sure you want to continue? [y/N] y
  4. Total reclaimed space: 0B

也可以加-a选项,将会清理所有不使用的镜像。

docker image prune命令可以删除以下类型的镜像

  1. 悬挂的镜像(dangling images): 这些是没有与任何容器关联的镜像,可能是之前构建的中间层镜像,或者由于某些原因没有被正确标记的镜像。
  2. 未被使用的本地镜像: 如果某个镜像没有被任何容器使用,它被认为是未被使用的。

这个命令的目的是为了清理系统中不再需要的镜像,以节省磁盘空间。在使用之前,需要确保没有重要的镜像会被删除,因为这个命令是不可逆的。

这个命令和docker rmi的区别在于docker rmi更倾向于手动删除某个镜像。

四、容器命令

1、创建一个新容器并运行一个命令docker run/创建一个新容器但不运行docker create(命令和docker run一样,docker run多一个-d选项)

-d: 后台运行容器,并返回容器 ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--name="nginx-lb": 为容器指定一个名称;

-h "mars": 指定容器的 hostname;

-e username="ritchie": 设置环境变量;

--cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定 CPU 运行;

-m :设置容器使用内存最大值;

--network="bridge": 指定容器的网络连接类型;

--link=[]: 添加链接到另一个容器;

--volume , -v: 绑定一个卷

--rm :shell 退出的时候自动删除容器

-i、-t、-d选项:-it搭配使用,-d后台运行

  1. sudo docker ps # 查看当前正在运行的容器
  2. sudo docker ps -a # 曾经运行过或者已创建未运行的容器
  3. sudo docker pull centos:7 # 拉取镜像
  4. sudo docker run centos:7 # 运行centos7容器,执行默认的启动命令(/bin/bash,会直接退出)
  5. sudo docker run -it centos:7 bash # 启动一个centos7交互式的 Bash 终端i:交互模式运行终端,为容器重新分配一个伪输入终端
  6. sudo docker run nginx:1.23.4-perl # 前台运行nginx(不退出),执行默认的启动命令(启动nginx)
  7. sudo docker run -d nginx:1.23.4-perl # 后台运行nginx

-p选项:指定端口映射

  1. [jly@VM-4-6-centos nginx]$ sudo docker run -d -p 8050:80 nginx:1.23.4-perl
  2. 71400b8910d6a5aeabc81e68c83d4e4b2c01e256364bf68933f640ca1762ba87

如果没有用-p将端口映射出来:sudo docker run -d nginx:1.23.4-perl,外部浏览器是访问不到容器的nginx的端口的。

当然也可以用sudo docker run -d -P nginx:1.23.4-perl来随机映射端口sudo docker ps查看随机分配的端口。

--name选项:在容器启动时为它取一个名字

sudo docker run --name myNginx nginx:1.23.4-perl

--cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定 CPU 运行

  1. [jly@VM-4-6-centos ~]$ sudo docker run -d --name myNginx --cpuset-cpus="0-9" nginx:1.23.4-perl
  2. docker: Error response from daemon: Requested CPUs are not available - requested 0-9, available: 0-1.
  3. See 'docker run --help'. # 可用核心数为0-1
  4. [jly@VM-4-6-centos ~]$ sudo docker run -d --name MyNginx --cpuset-cpus="0-1" nginx:1.23.4-perl
  5. c5720d9ba305e8e48d59653d926d2993315e2a389c831e8e3455361b5b8bffd9

-m :设置容器使用内存最大值(示例为500m)

  1. [jly@VM-4-6-centos ~]$ sudo docker run -d --name MyNginx1 -m 500m nginx:1.23.4-perl
  2. 89c9282f55bee6f4d3d83a7bd4827bac1677849ed32c2d40b190fb8d9a8eb2db

--link=[]: 添加链接到另一个容器,让两个容器能相互访问

  1. # 运行centos7容器
  2. [jly@VM-4-6-centos ~]$ sudo docker run -it --name MyCentOS7 centos:7 bash
  3. [root@32fc6c8c5808 /]#
  4. # 运行第二个centos7容器并对链接的容器改名
  5. [jly@VM-4-6-centos ~]$ sudo docker run -it --name MyCentOS7_1 --link MyCentOS7:changeName centos:7 bash
  6. # 第二个容器ping第一个容器,可以ping通。
  7. [root@6bf58364ef6e /]# ping changeName
  8. PING changeName (172.17.0.4) 56(84) bytes of data.
  9. 64 bytes from changeName (172.17.0.4): icmp_seq=1 ttl=64 time=0.101 ms
  10. 64 bytes from changeName (172.17.0.4): icmp_seq=2 ttl=64 time=0.050 ms
  11. 64 bytes from changeName (172.17.0.4): icmp_seq=3 ttl=64 time=0.053 ms
  12. # 第一个容器ping第二个容器,ping不通(因为创建第一个容器的时候没有--link链接)
  13. [root@32fc6c8c5808 /]# ping MyCentOS7_1
  14. ping: MyCentOS7_1: Name or service not known
  15. # 查看两个容器的/etc/hosts目录,在这个文件中添加ip即可
  16. 第一个:
  17. [root@32fc6c8c5808 /]# cat /etc/hosts
  18. 127.0.0.1 localhost
  19. ::1 localhost ip6-localhost ip6-loopback
  20. fe00::0 ip6-localnet
  21. ff00::0 ip6-mcastprefix
  22. ff02::1 ip6-allnodes
  23. ff02::2 ip6-allrouters
  24. 172.17.0.4 32fc6c8c5808
  25. 第二个:
  26. [root@6bf58364ef6e /]# cat /etc/hosts
  27. 127.0.0.1 localhost
  28. ::1 localhost ip6-localhost ip6-loopback
  29. fe00::0 ip6-localnet
  30. ff00::0 ip6-mcastprefix
  31. ff02::1 ip6-allnodes
  32. ff02::2 ip6-allrouters
  33. 172.17.0.4 changeName 32fc6c8c5808 MyCentOS7 # 保存第一个容器的ip
  34. 172.17.0.5 6bf58364ef6e # 自己的ip

--rm :shell 退出的时候自动删除容器

带--rm,退出后并不会留下记录:

  1. [jly@VM-4-6-centos ~]$ sudo docker run -it --name MyCentOS7_2 --rm centos:7
  2. [root@da44dd4bf0e1 /]# exit
  3. exit
  4. [jly@VM-4-6-centos ~]$ sudo docker ps -a
  5. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  6. 6bf58364ef6e centos:7 "bash" 3 hours ago Exited (127) 3 hours ago MyCentOS7_1
  7. 32fc6c8c5808 centos:7 "bash" 3 hours ago Exited (127) 2 hours ago MyCentOS7
  8. 89c9282f55be nginx:1.23.4-perl "/docker-entrypoint.…" 3 hours ago Exited (0) 32 minutes ago MyNginx1
  9. c5720d9ba305 nginx:1.23.4-perl "/docker-entrypoint.…" 3 hours ago Up 3 hours 80/tcp MyNginx

2、列出容器docker ps

  1. sudo docker ps
  2. sudo docker ps -a # 曾经运行过或者已创建未运行的容器
  3. sudo docker ps -as # s:显示大小

3、查看容器日志docker logs

  1. # 启动一个nginx
  2. [jly@VM-4-6-centos ~]$ sudo docker run -d -p 8051:80 --name myNginx nginx:1.23.4-perl
  3. e965415b65e7d0a02be0ec0ce0c640f7828113520b3ead38a5ac9c7b284c7bcd
  4. # 直接docker logs查看日志
  5. [jly@VM-4-6-centos ~]$ sudo docker logs myNginx
  6. /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
  7. /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
  8. /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
  9. 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
  10. 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
  11. /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
  12. /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
  13. /docker-entrypoint.sh: Configuration complete; ready for start up
  14. 2024/02/17 15:41:24 [notice] 1#1: using the "epoll" event method
  15. 2024/02/17 15:41:24 [notice] 1#1: nginx/1.23.4
  16. 2024/02/17 15:41:24 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
  17. 2024/02/17 15:41:24 [notice] 1#1: OS: Linux 3.10.0-1160.71.1.el7.x86_64
  18. ......
  19. # 加个-f,持续输出(刷新nginx的主页,会持续输出log)
  20. [jly@VM-4-6-centos ~]$ sudo docker logs -f myNginx
  21. # 打印最新的前5条log
  22. [jly@VM-4-6-centos ~]$ sudo docker logs -f -n 5 myNginx

4、将当前终端连接到正在运行的某个Docker容器的标准输入、输出和错误docker attach

关键参数:

--sig-proxy:是否将所有信号代理,默认是true(退出将导致容器退出),若设置为false,则不会影响容器。


连接容器后将会接管该容器的标准输入、标准输出、标准错误,所以网页端一刷新,终端立马接收到相关log信息。若按下ctrl+c,该容器将会退出:

如果在退出时不想退出容器,则需要加上--sig-proxy=false将信号代理:

[jly@VM-4-6-centos ~]$ sudo docker attach --sig-proxy=false myNginx

5、在容器中执行命令docker exec

-d: 分离模式,在后台运行;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

-e:设置环境变量;

-u/--user: 指定用户来执行命令

-w/--workdir:指定工作目录

  1. # 进入容器,输入命令
  2. [jly@VM-4-6-centos ~]$ sudo docker exec -it myNginx bash
  3. root@e965415b65e7:/# curl 127.0.0.1 # 通过 HTTP 请求访问本地主机
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. ......
  8. # 持续在容器中输入命令
  9. root@e965415b65e7:/# nginx -v
  10. nginx version: nginx/1.23.4
  11. # 输入exit退出
  12. root@e965415b65e7:/# exit
  13. exit
  14. [jly@VM-4-6-centos ~]$
  15. # 这两种方式都可以在容器中输入单条命令
  16. [jly@VM-4-6-centos ~]$ sudo docker exec myNginx nginx -v
  17. nginx version: nginx/1.23.4
  18. [jly@VM-4-6-centos ~]$ sudo docker exec -it myNginx nginx -v
  19. nginx version: nginx/1.23.4

6、将停止的容器重新启动docker start/将运行的容器停止docker stop

  1. [jly@VM-4-6-centos ~]$ sudo docker stop myNginx
  2. myNginx
  3. [jly@VM-4-6-centos ~]$ sudo docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. [jly@VM-4-6-centos ~]$ sudo docker start myNginx
  6. myNginx
  7. [jly@VM-4-6-centos ~]$ sudo docker ps
  8. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  9. e965415b65e7 nginx:1.23.4-perl "/docker-entrypoint.…" 23 hours ago Up 7 seconds 0.0.0.0:8051->80/tcp, :::8051->80/tcp myNginx

7、重启容器docker restart

它可以重启运行、停止甚至已退出的容器。

  1. # 优雅的重启,给足容器时间善后资源
  2. [jly@VM-4-6-centos ~]$ sudo docker restart MyCentOS7
  3. MyCentOS7
  4. # 不优雅的重启,不管容器是否在运行,先发个kill -9直接杀死再重启
  5. [jly@VM-4-6-centos ~]$ sudo docker restart -s -9 MyCentOS7
  6. MyCentOS7

8、强制退出容器docker kill

docker stop发送温柔的SIGTERM信号,docker kill发送暴力的SIGKILL信号。

sudo docker kill

9、查看容器中运行的进程信息docker top

例如有些容器如Nginx中就没有ps命令,要查看容器的进程信息就需要用docker top

  1. [jly@VM-4-6-centos ~]$ sudo docker top myNginx
  2. [jly@VM-4-6-centos ~]$ sudo docker stats

10、显示容器资源的使用情况docker stats

  1. [jly@VM-4-6-centos ~]$ sudo docker stats # 实时刷新
  2. [jly@VM-4-6-centos ~]$ sudo docker stats myNginx # 实时刷新
  3. [jly@VM-4-6-centos ~]$ sudo docker stats -a # 连已经停止的容器都打印出来,没啥用
  4. [jly@VM-4-6-centos ~]$ sudo docker stats --no-stream # 快照形式
  5. CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
  6. e965415b65e7 myNginx 0.00% 2.336MiB / 1.952GiB 0.12% 28.5kB / 21.4kB 3.11MB / 0B 3

11、查看容器详细信息docker container inspect

  1. [jly@VM-4-6-centos ~]$ sudo docker container inspect myNginx
  2. [
  3. {
  4. "Id": "e965415b65e7d0a02be0ec0ce0c640f7828113520b3ead38a5ac9c7b284c7bcd",
  5. "Created": "2024-02-17T15:41:20.359522338Z",
  6. "Path": "/docker-entrypoint.sh",
  7. "Args": [
  8. "nginx",
  9. "-g",
  10. "daemon off;"
  11. ],
  12. "State": {
  13. "Status": "running",
  14. ......

12、查看指定容器所对外映射端口docker port

  1. [jly@VM-4-6-centos ~]$ sudo docker port myNginx
  2. 80/tcp -> 0.0.0.0:8051
  3. 80/tcp -> [::]:8051

13、在容器和宿主机之间拷贝文件docker cp

  1. # 将容器myNginx中,路径为/usr/share/nginx/html/index.html的文件拷贝至宿主机当前目录
  2. [jly@VM-4-6-centos ~]$ sudo docker cp myNginx:/usr/share/nginx/html/index.html .
  3. Successfully copied 2.56kB to /home/jly/.

14、 检查容器中文件结构的更改docker diff

C:修改过;A:新增;D:删除

  1. [jly@VM-4-6-centos ~]$ sudo docker diff myNginx
  2. C /etc
  3. C /etc/nginx
  4. C /etc/nginx/conf.d
  5. C /etc/nginx/conf.d/default.conf
  6. C /run
  7. A /run/nginx.pid
  8. C /var
  9. C /var/cache
  10. C /var/cache/nginx
  11. A /var/cache/nginx/uwsgi_temp
  12. A /var/cache/nginx/client_temp
  13. A /var/cache/nginx/fastcgi_temp
  14. A /var/cache/nginx/proxy_temp
  15. A /var/cache/nginx/scgi_temp
  16. C /root
  17. A /root/.bash_history

15、从容器中创建一个新的自定义镜像docker commit

-a: 提交的镜像作者;

-c: 使用Dockerfile指令创建镜像,可以修改启动指令;

-m: 提交时的说明文字;

-p:在commit时,将容器暂停。

  1. # 查看当前正在运行的镜像
  2. [jly@VM-4-6-centos ~]$ sudo docker ps
  3. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  4. e965415b65e7 nginx:1.23.4-perl "/docker-entrypoint.…" 47 hours ago Up 21 minutes 0.0.0.0:8051->80/tcp, :::8051->80/tcp myNginx
  5. # 由运行中的容器myNginx创建一个新的镜像myNginx my_new_nginx
  6. [jly@VM-4-6-centos ~]$ sudo docker commit myNginx my_new_nginx:v1.0
  7. sha256:fa1552088c2d80faee9436b80ccf5927c14b8a7995f88a5c69d5301540b395c5
  8. # 带参数
  9. sudo docker commit -a 'jianglingyu' -m 'add files' -c 'CMD ["tail", "-f", "/etc/hosts"]' -p myNginx my_new_nginx:v2.0

每次commit,生成的镜像会保存当前容器的一些修改。

16、暂停/取消暂停容器中的所有进程docker pause/docker unpause

通过剥夺容器进程的时间片来暂停进程。

  1. # 暂停
  2. [jly@VM-4-6-centos ~]$ sudo docker pause myNginx
  3. myNginx
  4. # 取消暂停
  5. [jly@VM-4-6-centos ~]$ sudo docker unpause myNginx
  6. myNginx

17、导出容器内容为tar包docker export/将导出的tar包还原为镜像docker import

docker export命令仅导出容器的文件系统,不包括容器的元数据(例如标签、端口映射、卷等)或容器的运行状态。如果还原时需要这些信息,使用docker save/docker load来保存还原。

  1. # 为容器打包
  2. [jly@VM-4-6-centos ~]$ sudo docker export -o myNginx.tar myNginx
  3. # 将导出的包还原为镜像
  4. [jly@VM-4-6-centos ~]$ sudo docker import myNginx.tar myNginxImpoet:v1.0
  5. # -c 修改镜像的启动命令 -m描述信息
  6. [jly@VM-4-6-centos ~]$ sudo docker import -c 'CMD ["nginx", "-g", "daemon off;"]' -m 'new commit' myNginx.tar myNginxImpoet:v1.0

18、阻塞运行直到容器停止,并打印退出码docker wait

  1. # docker wait容器,在被kill之后,退出码137
  2. [jly@VM-4-6-centos ~]$ sudo docker wait myNginx1
  3. 137
  4. # 杀掉容器
  5. [jly@VM-4-6-centos ~]$ sudo docker kill myNginx1
  6. myNginx

19、容器重命名docker rename

[jly@VM-4-6-centos ~]$ sudo docker rename myNginx myNginx1

20、删除所有停止的容器docker container prune

[jly@VM-4-6-centos ~]$ sudo docker container prune

21、更新容器配置docker update

--cpus: cpu数量;

--cpuset-cpus: 使用哪几个cpu;

-m/--memory: 内存限制;

--memory-swap:交换内存;

--cpu-period:用来指定容器对cpu的使用要在多长时间做一次重新分配;

--cpu-quota:用来指定这个周期内,最多可以有多少时间跑这个容器。

  1. # 更新容器内存限制为500m
  2. [jly@VM-4-6-centos ~]$ sudo docker update --memory 500m --memory-swap -1 myNginx
  3. myNginx

五、nginx

  1. sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  2. # 刷新本地存储库元数据缓存
  3. yum makecache
  4. sudo yum install nginx -y
  5. # 启动nginx,可在浏览器中输入服务器IP地址来查看首页
  6. sudo nginx

六、busybox

命令安装:

  1. # centos下载busybox
  2. [jly@VM-4-6-centos busybox]$ wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 --no-check-certificat
  3. # 加上可执行权限
  4. [jly@VM-4-6-centos busybox]$ chmod +x busybox
  5. # 使用busybox
  6. [jly@VM-4-6-centos busybox]$ ./busybox ls
  7. busybox

使用docker安装:

  1. # 下载docker镜像
  2. sudo docker pull busybox:1.36
  3. # 打标签
  4. sudo docker tag busybox:1.36 jianglingyu/busybox:v1.0
  5. # 登录
  6. sudo docker login
  7. # push镜像到自己的仓库-a代表全部push
  8. sudo docker push jianglingyu/busybox:v1.0 -a

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/262943
推荐阅读
相关标签
  

闽ICP备14008679号