2017-10-28 121 views
1

我有以下Dockerfile,显示应该启动饲养员当容器得到推出:将容器作为守护进程运行?

FROM openjdk:latest 

MAINTAINER Khinkali 

COPY ["zookeeper*", "/usr/local/zookeeper/"] 
RUN ["/bin/mkdir", "-p", "/var/lib/zookeeper/"] 
COPY ["zoo.cfg", "/usr/local/zookeeper/conf/"] 

ENTRYPOINT /usr/local/zookeeper/bin/zkServer.sh start 

EXPOSE 2181 

我想要的是在后台运行的守护进程的容器。

构建映像后,我开始容器如下(图像的名称是动物园管理员):

[email protected]:~/zookeeper$ docker run -d -p 2181 zookeeper 
3632584a1df907b82ec868bd47ebe3c4360a9a6cc28ef751205db85b67e6604c 
[email protected]:~/zookeeper$ docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 

正如你所看到的,容器不活跃运行的。我究竟做错了什么?

+1

您是否尝试过使用'搬运工日志<容器名称/ ID>'或运行容器获取日志,而不'-d'(如使用'docker run -it -rm -p 2181 zookeeper')?请编辑您的问题以添加其中一个的输出。 – joelnb

回答

3

您必须在前台运行zookeeper,因为它是由docker请求的。命令/入口点必须是前台进程。

因此改变:

ENTRYPOINT /usr/local/zookeeper/bin/zkServer.sh start 

要:

ENTRYPOINT /usr/local/zookeeper/bin/zkServer.sh start-foreground 
+0

非常感谢。它工作正常。 –

相关问题