将容器作为守护进程运行?
问题描述:
我有以下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
正如你所看到的,容器不活跃运行的。我究竟做错了什么?
答
您必须在前台运行zookeeper,因为它是由docker请求的。命令/入口点必须是前台进程。
因此改变:
ENTRYPOINT /usr/local/zookeeper/bin/zkServer.sh start
要:
ENTRYPOINT /usr/local/zookeeper/bin/zkServer.sh start-foreground
+0
非常感谢。它工作正常。 –
您是否尝试过使用'搬运工日志'或运行容器获取日志,而不'-d'(如使用'docker run -it -rm -p 2181 zookeeper')?请编辑您的问题以添加其中一个的输出。 – joelnb