docker - 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 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
afterdocker start
退出bash
进程并且主进程仍在继续。
推荐阅读
- msbuild - 将 ESLint 与 MSBuild 集成
- c++ - 如何正确设置 ios 标志以进行流操作?
- r - R - 如何使用参数列表过滤数据以生成多个数据框和图表
- android - 如何获取热点的BSSID
- chef-infra - Chef 客户端安装和节点配置
- grails - 使用 Spring Security 插件在密码更改时使 Grails 中用户的所有其他 http 会话无效的正确方法?
- python - 为什么导入 lxml 不能按预期工作?
- python - Google Drive api 属性错误:“list”对象没有属性“uri”
- listview - “对话框”内的列表视图中的复选框无法正常工作
- c++ - 有没有办法像动画一样移动控制台窗口?