Docker容器无法启动,显示为“n秒前退出”'

时间:2015-07-14 17:08:16

标签: docker

我试图了解docker在启动/进入容器时的工作原理。我是新手,所以忍受我。我尝试在SO中找到我需要的答案,但到目前为止还没有。

我正在尝试实现3个基本的东西:

  • 启动容器
  • 确保所有端口都映射到我的容器(即我可以从容器外部看到我的容器的apache)
  • SSH或将控制台放入我的容器

以下是我用来启动容器的内容:

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中的状态。我做错了吗?

2 个答案:

答案 0 :(得分:3)

只有初始命令执行时,Docker容器才会运行。在这种情况下,该命令是gl_Position = mvp * vec4(position, 0.0, 1.0); ,它在不超过几秒后退出,此时容器也会停止。如果要在容器中运行守护程序,则需要使守护程序成为主程序使其在前台运行,或者使用带有可以处理守护程序的命令的映像,例如{ {3}}

答案 1 :(得分:0)

当您附加到容器然后退出时,您的shell将被终止,然后您的容器将停止,因为这是您的初始化过程。

试试这些想法:

如果您需要获得任何泊坞窗图像的控制台,您只需使用' docker exec'

docker exec -ti [containername / hash] / bin / bash

或安装Jpetazzo的nsenter / docker-enter工具

https://github.com/jpetazzo/nsenter

它们比docker exec

容易得多

运行后

docker run --rm -v / usr / local / bin:/ target jpetazzo / nsenter

只需使用

docker-enter [containername]