docker run 和 docker start 的生命周期差异

时间:2021-04-05 08:05:56

标签: docker

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

例如我运行以下命令

<块引用>

创建新的 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

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

1 个答案:

答案 0 :(得分:1)

使用 docker run 命令:

docker run -it ubuntu bash

容器是通过执行 bash 命令启动的,所以当你从 exitbash 时,容器也会退出,因为 bash 是正在运行的主进程容器内。

但是使用 docker exec 命令:

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

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

相关问题