博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第 4 章 容器 - 025 - 容器常用操作
阅读量:6531 次
发布时间:2019-06-24

本文共 7753 字,大约阅读时间需要 25 分钟。

容器常用操作

stop/start/restart 容器

通过 docker stop 可以停止运行的容器。

1 root@ubuntu:~# docker ps 2 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES 3 8b62217b8d1d        httpd               "httpd-foreground"       3 days ago          Up 3 days           80/tcp                   myhttp 4 fa7407d1b483        ubuntu              "/bin/bash -c 'while…"   3 days ago          Up 3 days                                    jolly_kirch 5 f27eb6348026        registry:2          "/entrypoint.sh /etc…"   4 days ago          Up 4 days           0.0.0.0:5000->5000/tcp   vigilant_swartz 6 root@ubuntu:~#  7 root@ubuntu:~# docker stop fa7407d1b483 8 fa7407d1b483 9 root@ubuntu:~# docker ps10 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES11 8b62217b8d1d        httpd               "httpd-foreground"       3 days ago          Up 3 days           80/tcp                   myhttp12 f27eb6348026        registry:2          "/entrypoint.sh /etc…"   4 days ago          Up 4 days           0.0.0.0:5000->5000/tcp   vigilant_swartz13 root@ubuntu:~#

容器在 docker host 中实际上是一个进程,docker stop 命令本质上是向该进程发送一个 SIGTERM 信号。

如果想快速停止容器,可使用 docker kill 命令,其作用是向容器进程发送 SIGKILL 信号。

1 root@ubuntu:~# docker ps 2 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES 3 8b62217b8d1d        httpd               "httpd-foreground"       3 days ago          Up 3 days           80/tcp                   myhttp 4 f27eb6348026        registry:2          "/entrypoint.sh /etc…"   4 days ago          Up 4 days           0.0.0.0:5000->5000/tcp   vigilant_swartz 5 root@ubuntu:~#  6 root@ubuntu:~# docker kill myhttp 7 myhttp 8 root@ubuntu:~#  9 root@ubuntu:~# docker ps10 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES11 f27eb6348026        registry:2          "/entrypoint.sh /etc…"   4 days ago          Up 4 days           0.0.0.0:5000->5000/tcp   vigilant_swartz12 root@ubuntu:~#

对于处于停止状态的容器,可以通过 docker start 重新启动。

docker start 会保留容器的第一次启动时的所有参数。

1 root@ubuntu:~# docker start myhttp2 myhttp3 root@ubuntu:~# docker ps4 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES5 8b62217b8d1d        httpd               "httpd-foreground"       3 days ago          Up 3 seconds        80/tcp                   myhttp6 f27eb6348026        registry:2          "/entrypoint.sh /etc…"   4 days ago          Up 4 days           0.0.0.0:5000->5000/tcp   vigilant_swartz7 root@ubuntu:~#

docker restart 可以重启容器,其作用就是依次执行 docker stop 和docker start

容器可能会因某种错误而停止运行。

对于服务类容器,通常希望在这种情况下容器能够自动重启。

启动容器时设置 --restart 就可以达到这个效果。

1 root@ubuntu:~# docker run -d --restart=always httpd 2 599ffc950752e832275be369ce6f8c6cffff526e8241c760b971db11b46df8183 root@ubuntu:~#

--restart=always 意味着无论容器因何种原因退出(包括正常退出),就立即重启。

该参数的形式还可以是 --restart=on-failure:3,意思是如果启动进程退出代码非0,则重启容器,最多重启3次。

pause/unpause 容器

需要让容器暂停工作一段时间,比如要对容器的文件系统打个快照,或者 dcoker host 需要使用 CPU,这时可以执行 docker pause

1 root@ubuntu:~# docker ps 2 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES 3 8b62217b8d1d        httpd               "httpd-foreground"       3 days ago          Up 5 minutes        80/tcp                   myhttp 4 f27eb6348026        registry:2          "/entrypoint.sh /etc…"   4 days ago          Up 4 days           0.0.0.0:5000->5000/tcp   vigilant_swartz 5 root@ubuntu:~# docker pause myhttp 6 myhttp 7 root@ubuntu:~# docker ps 8 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                  PORTS                    NAMES 9 8b62217b8d1d        httpd               "httpd-foreground"       3 days ago          Up 5 minutes (Paused)   80/tcp                   myhttp10 f27eb6348026        registry:2          "/entrypoint.sh /etc…"   4 days ago          Up 4 days               0.0.0.0:5000->5000/tcp   vigilant_swartz11 root@ubuntu:~#

处于暂停状态的容器不会占用 CPU 资源,直到通过 docker unpause 恢复运行。

1 root@ubuntu:~# docker unpause myhttp2 myhttp3 root@ubuntu:~# docker ps4 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES5 8b62217b8d1d        httpd               "httpd-foreground"       3 days ago          Up 6 minutes        80/tcp                   myhttp6 f27eb6348026        registry:2          "/entrypoint.sh /etc…"   4 days ago          Up 4 days           0.0.0.0:5000->5000/tcp   vigilant_swartz7 root@ubuntu:~#

 

删除容器

使用 docker 一段时间后,host 上可能会有大量已经退出了的容器。

1 root@ubuntu:~# docker ps -a  2 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS                    NAMES 3 599ffc950752        httpd               "httpd-foreground"       5 minutes ago       Exited (137) 3 minutes ago                            epic_bohr 4 07de97f97680        busybox             "sh"                     8 hours ago         Exited (0) 8 hours ago                                lucid_franklin 5 c44dc8090486        ubuntu              "/bin/bash -c 'while…"   2 days ago          Exited (137) 2 days ago                               blissful_joliot 6 d7534aebaf54        ubuntu              "/bin/bash -c 'while…"   2 days ago          Exited (137) 2 days ago                               nifty_wright 7 8b62217b8d1d        httpd               "httpd-foreground"       3 days ago          Up 7 minutes                 80/tcp                   myhttp 8 d32b4710507d        ubuntu              "/bin/bash -c 'while…"   3 days ago          Exited (137) 3 days ago                               trusting_panini 9 fa7407d1b483        ubuntu              "/bin/bash -c 'while…"   3 days ago          Exited (137) 9 minutes ago                            jolly_kirch10 8b312e89208b        ubuntu              "pwd"                    3 days ago          Exited (0) 3 days ago                                 frosty_williams11 1b4e997bcfd3        ubuntu              "pwd"                    3 days ago          Exited (0) 3 days ago                                 sad_brahmagupta12 f27eb6348026        registry:2          "/entrypoint.sh /etc…"   4 days ago          Up 4 days                    0.0.0.0:5000->5000/tcp   vigilant_swartz13 root@ubuntu:~#

这些容器依然会占用 host 的文件系统资源,如果确认不会再重启此类容器,可以通过 docker rm 删除。

1 root@ubuntu:~# docker rm 599ffc9507522 599ffc9507523 root@ubuntu:~#

docker rm 一次可以指定多个容器,如果希望批量删除所有已经退出的容器,可以执行如下命令:

docker rm -v $(docker ps -aq -f status=exited) 

1 root@ubuntu:~# docker rm -v $(docker ps -aq -f status=exited) 2 07de97f97680 3 c44dc8090486 4 d7534aebaf54 5 d32b4710507d 6 fa7407d1b483 7 8b312e89208b 8 1b4e997bcfd3 9 root@ubuntu:~# docker ps -a10 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES11 8b62217b8d1d        httpd               "httpd-foreground"       3 days ago          Up 9 minutes        80/tcp                   myhttp12 f27eb6348026        registry:2          "/entrypoint.sh /etc…"   4 days ago          Up 4 days           0.0.0.0:5000->5000/tcp   vigilant_swartz13 root@ubuntu:~#
  • docker rm 是删除容器
  • docker rmi 是删除镜像

  

 

--------------------引用来自-------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587651&idx=1&sn=787c294f16f32a7343e202254c8241c0&chksm=8d3080daba4709cc8e90a33bc93bdf6abdc8e9d6c122cc65256d5bc7d945eba1814d1a5db573&scene=21#wechat_redirect

转载于:https://www.cnblogs.com/gsophy/p/10287777.html

你可能感兴趣的文章
我的移动互联网平台梦
查看>>
awk使用详解
查看>>
【Python】安装MySQL-python-1.2.5
查看>>
磁盘高负荷把MYSQL拖垮(请用火狐浏览器浏览)
查看>>
http和socket之长连接和短连接区别
查看>>
Linux-Shell简介——文件名匹配/输出重定向
查看>>
我的友情链接
查看>>
HDFS文件追加append
查看>>
Java代码计算运行时间
查看>>
自助Linux之问题诊断工具strace
查看>>
centos下rsync同步数据
查看>>
MyISAM存储引擎
查看>>
nginx添加no-cache
查看>>
无聊写了个2048
查看>>
DRBD+Corosync+Pacemaker+MySQL(下)
查看>>
Jquery 操作小集结
查看>>
ANDROID SQLite
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
k8s node alertmanager监控报警配置方法
查看>>