运行容器作为守护进程?

我有下面的Dockerfile,显示应启动容器启动时的zookeeper:

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 

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

build立图像后,我开始容器如下(图像的名称是zookeeper):

 dockerizer@docker1:~/zookeeper$ docker run -d -p 2181 zookeeper 3632584a1df907b82ec868bd47ebe3c4360a9a6cc28ef751205db85b67e6604c dockerizer@docker1:~/zookeeper$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 

正如你所看到的,容器并不是主动运行的。 我究竟做错了什么?

你必须在前台运行zookeeper,因为docker会这么做。 命令/入口点必须是前台进程。

所以改变:

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

至:

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