(五)一张图搞懂容器所有操作
前面我们已经讨论了容器的各种操作,对容器的生命周期有了大致的理解,下面这张状态机很好地总结了容器各种状态之间是如何转换的 。
如果掌握了前面的知识,要看懂这张图应该不难。不过有两点还是需要补充一下:
-
可以先创建容器,稍后再启动。
root@cuiyongchao:/dockerfile# docker create httpd 751d726f3910d3c139f138c6456623160ccd148d47f82244118f418f829a22ef root@cuiyongchao:/dockerfile# docker start 751d726f3910d3c139f138c6456623160ccd148d47f82244118f418f829a22ef 751d726f3910d3c139f138c6456623160ccd148d47f82244118f418f829a22ef root@cuiyongchao:/dockerfile# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 751d726f3910 httpd "httpd-foreground" 24 seconds ago Up 7 seconds 80/tcp tender_kepler
①
docker create
创建的容器处于 Created 状态。②
docker start
将以后台方式启动容器。docker run
命令实际上是docker create
和docker start
的组合。 -
只有当容器的启动进程 退出时,
--restart
才生效。
退出包括正常退出或者非正常退出。这里举了两个例子:启动进程正常退出或发生 OOM,此时 docker 会根据 --restart
的策略判断是否需要重启容器。但如果容器是因为执行 docker stop
或docker kill
退出,则不会自动重启。