• 【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. 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. <head>
    5. ......
    6. # 持续在容器中输入命令
    7. root@e965415b65e7:/# nginx -v
    8. nginx version: nginx/1.23.4
    9. # 输入exit退出
    10. root@e965415b65e7:/# exit
    11. exit
    12. [jly@VM-4-6-centos ~]$
    13. # 这两种方式都可以在容器中输入单条命令
    14. [jly@VM-4-6-centos ~]$ sudo docker exec myNginx nginx -v
    15. nginx version: nginx/1.23.4
    16. [jly@VM-4-6-centos ~]$ sudo docker exec -it myNginx nginx -v
    17. 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

  • 相关阅读:
    Web前端系列技术之Web APIs基础(从基础开始)①
    mac m1上安装centos8时遇到的docker 镜像问题 - 系统架构和docker镜像的关系
    HTML5基础:框架,文字,图片,表格,列表
    Opengl Fence 内部实现
    ros gdb调试
    类和对象(末)
    移动Web:Flex布局、移动端适配、视口、二倍图
    Android OpenGL ES 学习(七) – 纹理
    华为云14天鸿蒙设备开发-Day3内核开发
    TAG YOU‘RE IT
  • 原文地址:https://blog.csdn.net/gfdxx/article/details/136200253