我有以下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
如您所见,容器根本没有运行。我究竟做错了什么?
答案 0 :(得分:3)
你必须在前台运行zookeeper,因为docker会请求它。命令/入口点必须是前台进程。
所以改变:
ENTRYPOINT /usr/local/zookeeper/bin/zkServer.sh start
要:
ENTRYPOINT /usr/local/zookeeper/bin/zkServer.sh start-foreground