根据我目前阅读的教程,使用“ docker run -d
”将从图像启动一个容器,容器将在后台运行。这是它的样子,我们可以看到我们已经有了容器 id。
root@docker:/home/root# docker run -d centos
605e3928cdddb844526bab691af51d0c9262e0a1fc3d41de3f59be1a58e1bd1d
但是,如果我运行“ docker ps
”,则没有返回任何内容。
所以我尝试了“ docker ps -a
”,我可以看到容器已经退出:
root@docker:/home/root# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
605e3928cddd centos:latest "/bin/bash" 31 minutes ago Exited (0) 31 minutes ago kickass_swartz
我做错什么了吗?如何解决此问题?
原文由 J John 发布,翻译遵循 CC BY-SA 4.0 许可协议
centos dockerfile 有一个默认命令
bash
。这意味着,当在后台运行时(
-d
),shell 会立即退出。2017 年更新
最新版本的 docker 授权在 分离模式 和 前台模式 下运行容器(
-t
,-i
或-it
)在这种情况下,您不需要任何额外的命令,这就足够了:
bash 将在后台等待。
最初在 kalyani-chaudhari 的 回答 中报告了这一点,并在 jersey bean 的 回答 中详细说明了这一点。
请注意,对于 alpine , Marinos An 在评论中 报告:
原始答案(2015)
如 本文所述:
所以这会起作用:
或者在 Dockerfile 中:
docker ps
会显示 centos 容器仍在运行。从那里,您可以 附加到它或从它分离(或
docker exec
一些命令)。