我试图了解docker在启动/进入容器时的工作方式。我对此很陌生,所以请多多包涵。我尝试在SO中找到我需要的答案,但到目前为止还没有找到。
我正在尝试实现3个基本目标:
这是我用来启动容器的内容:
caldav@caldav:~/docker/caldav-server$ sudo docker run -it -d -P caldav-server service apache2 start
48fbea1865e302768a863767bf01b08f35f0221a4b29e5f2208d57e54660ef42
但是当我运行ps时,我将其视为“n秒钟前退出”:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
48fbea1865e3 caldav-server "service apache2 sta 2 seconds ago Exited (0) 1 seconds ago
这到底是什么意思?显然,当我转到http://[IP_ADDRESS]时,我看不到它正在运行
更新:好的,当我删除apache start命令时,它似乎仍然存在:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
20d5daca6237 caldav-server "/bin/bash" 10 seconds ago Up 9 seconds thirsty_ritchie
但后来我似乎无法将控制台加入其中。这是我尝试的:
docker attach 20d5daca6237
很好(可以让我进行bash访问)。但是,当我尝试通过键入退出
$ exit
然后,它将容器显示为ps中的“已退出”状态。我做错了吗?
最佳答案
Docker容器仅在其初始命令运行时运行。在这种情况下,该命令为service apache2 start
,此命令将在不超过几秒钟后退出,此时容器也将停止。如果要在容器中运行守护程序,则需要使该守护程序成为主程序并使它在前台运行,或者需要使用带有可处理守护程序的命令的镜像(例如 phusion/baseimage
)。
关于docker - Docker容器未启动,显示为 'Exited n seconds ago',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31413055/