Docker容器将在“docker run -d”后自动停止

Docker容器将在“docker run -d”后自动停止

根据我到目前为止阅读的教程,使用“ 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

我做错了什么?我该如何解决这个问题?


慕后森
浏览 12502回答 3
3回答

米脂

根据这个答案,添加-t标志将阻止容器在后台运行时退出。然后,您可以使用docker exec -i -t <image> /bin/bash进入shell提示符。docker run -t -d <image> <command>似乎-t选项没有很好地记录,尽管帮助说它“分配了一个伪TTY”。

繁星coding

背景Docker容器运行一个使其保持活动状态的进程(“命令”或“入口点”)。只要命令继续运行,容器将继续运行。在您的情况下,命令(/bin/bash默认情况下,打开centos:latest)立即退出(正如bash没有连接到终端并且无法运行时)。通常,当您以守护进程模式运行容器(with&nbsp;-d)时,容器正在运行某种守护进程(如httpd)。在这种情况下,只要httpd守护程序正在运行,容器将保持活动状态。您似乎要做的是在容器内运行守护程序进程的情况下保持容器的活动状态。这有点奇怪(因为容器在你与它交互之前没有做任何有用的事情,可能还有docker exec),但在某些情况下,做这样的事情可能是有意义的。(你的意思是在容器内找到一个bash提示符吗?这很容易!docker run -it centos:latest)解在容器模式下无限期地保持容器活动的一种简单方法是sleep infinity作为容器的命令运行。这并不依赖于在守护进程模式下分配TTY等奇怪的事情。虽然它依赖于做一些奇怪的事情,比如使用sleep你的主要命令。$&nbsp;docker&nbsp;run&nbsp;-d&nbsp;centos:latest&nbsp;sleep&nbsp;infinity$&nbsp;docker&nbsp;psCONTAINER&nbsp;ID&nbsp;&nbsp;IMAGE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COMMAND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREATED&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STATUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORTS&nbsp;NAMESd651c7a9e0ad&nbsp;&nbsp;centos:latest&nbsp;"sleep&nbsp;infinity"&nbsp;2&nbsp;seconds&nbsp;ago&nbsp;Up&nbsp;2&nbsp;seconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nervous_visvesvaraya替代方案如cjsimon所示,该-t选项分配“伪tty”。这会让bash继续无限期地运行,因为它认为它连接到交互式TTY(即使你没有通过也无法与特定的TTY交互-i)。无论如何,这应该也可以解决问题:$&nbsp;docker&nbsp;run&nbsp;-t&nbsp;-d&nbsp;centos:latest不是100%肯定是否-t会产生其他奇怪的互动;&nbsp;如果有,可以在下面留言。
打开App,查看更多内容
随时随地看视频慕课网APP