将容器作为守护进程运行?

时间:2017-10-28 21:25:10

标签: docker dockerfile

我有以下Dockerfile,show应该在容器启动时启动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

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

构建映像后,我按如下方式启动容器(映像名称为zookeeper):

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

如您所见,容器根本没有运行。我究竟做错了什么?

1 个答案:

答案 0 :(得分:3)

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

所以改变:

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

要:

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