首页 > 解决方案 > docker run 和 docker start 的生命周期区别

问题描述

我有一个关于容器生命周期的基本问题。

例如我运行以下命令

创建新的 ubuntu 容器并运行 bash 命令

docker run -it ubuntu bash

在容器的 bash

exit

新容器将处于 EXITED 状态

docker ps -a

然后我使用 docker start 重启容器

docker start xxxx(container name)
docker exec -it xxxx(container name) /bin/bash

在重新启动的容器的 bash

exit

重新启动的容器仍在运行

docker ps -a

我可以知道这种行为背后的原因吗?谢谢!

标签: docker

解决方案


使用docker run命令:

docker run -it ubuntu bash

容器随着bash命令的执行而启动,因此当您exit从 中bash退出时,容器也会像bash在容器内运行的主进程一样退出。

但是使用docker exec命令:

docker exec -it xxxx(container name) /bin/bash

容器已经在运行CMD/定义的命令,ENTRYPOINT并且bash是作为单独进程执行的命令。因此,exitbashafterdocker start退出bash进程并且主进程仍在继续。


推荐阅读