我有一个关于容器生命周期的基本问题。
例如我运行以下命令
<块引用>创建新的 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
我可以知道这种行为背后的原因吗?谢谢!
答案 0 :(得分:1)
使用 docker run
命令:
docker run -it ubuntu bash
容器是通过执行 bash
命令启动的,所以当你从 exit
中 bash
时,容器也会退出,因为 bash
是正在运行的主进程容器内。
但是使用 docker exec
命令:
docker exec -it xxxx(container name) /bin/bash
容器已经在运行由 CMD
/ENTRYPOINT
定义的命令,bash
是作为单独进程执行的命令。因此,在 exit
之后 bash
ing from docker start
退出 bash
进程并且主进程仍在继续。