尽管服务正在运行,但Docker容器会立即退出

时间:2016-10-28 15:50:35

标签: docker ldap docker-compose dockerfile unboundid-ldap-sdk

类似的问题似乎存在,但没有一个有明确的答案(至少对我而言)。我在一个带有bin/start-ds文件的容器中有一个LDAP服务器。问题是shell脚本完成后容器退出。我理解退出,如果脚本只是打印一条消息,但在我的情况下,它启动一个过程。并且由于进程正在运行,我希望我的容器在detach模式下启动时无限期运行。但情况并非如此,它会立即退出。任何指针都会非常感激。以下是我的简单Dockerfile

FROM unboundid-base:0.2
MAINTAINER helloworld

CMD ["/home/unboundid/UnboundID-DS/bin/start-ds"]

3 个答案:

答案 0 :(得分:2)

可能有两个原因:

  1. 添加--nodetach
  2. CMD ["/home/unboundid/UnboundID-DS/bin/start-ds", "--nodetach"]

    1. 容器在运行后立即退出的其他原因是缺乏资源。您可能拥有足够的资源,但同时运行多个容器会消耗您的资源。或者你只是在运行你的容器,但是这个容器可能需要更多的资源来运行而你却没有达到它。分配更多的资源,增加你的内存和内存,并尝试再次运行你的容器。
    2. 希望这有帮助。

答案 1 :(得分:1)

正如我猜,你使用:http://docs.oracle.com/cd/E19623-01/820-6171/startds.html

所以根据文档添加:--nodetach option

CMD ["/home/unboundid/UnboundID-DS/bin/start-ds", "--nodetach"]

答案 2 :(得分:0)

我在docker容器中运行所有UnboundID服务器产品以进行dev / test / troubleshooting。我的Dockerfile CMD行是:

CMD ${UBID_HOME}/bin/start-${UBID_PRODUCT};/bin/bash

只要您离开正在运行的前台进程,容器就不会退出,并且留下比shell更好的进程与服务器进行交互。