使用ENTRYPOINT启用容器启动和停止的正确方法
我有一个使用Dockerfile
构build的自定义图像。 显然,新的运行正常,但是当我停止容器并重新启动它时,它不会启动并保持在0号出口的状态。
该图像由apache2和symfony web应用程序的一大堆php模块组成。
这是如何Dockerfile
结束
RUN a2enmod rewrite CMD service apache2 restart ENTRYPOINT ["/usr/sbin/apache2ctl"] CMD ["-D", "FOREGROUND"] EXPOSE 80
我看到容器通常使用docker-entrypoint.sh,但不确定进入的内容和它扮演的angular色。
入口点不应该与你的容器没有任何关系,而不是重新启动。 您的问题很可能在其他地方,您需要查看容器中的日志以进行debugging。 docker diff ...
的输出docker diff ...
也可能有助于查看在容器文件系统中发生了什么变化。
如果没有定义ENTRYPOINT
默认运行CMD
。 如果定义了ENTRYPOINT
则CMD
任何内容都将成为入口点脚本的cli参数。 所以在上面的例子中,它将使用/usr/sbin/apache2ctl -D FOREGROUND
启动(或重启)容器。 在docker run
命令的容器名称后追加的任何内容都将覆盖CMD
的值。 你可以用ENTRYPOINT
docker run --entrypoint ...
覆盖ENTRYPOINT
的值。
有关更多详细信息,请参阅入口点选项上的Docker文档 。