Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 使用ENTRYPOINT启用容器启动和停止的正确方法_Docker_Docker Compose - Fatal编程技术网

Docker 使用ENTRYPOINT启用容器启动和停止的正确方法

Docker 使用ENTRYPOINT启用容器启动和停止的正确方法,docker,docker-compose,Docker,Docker Compose,我正在使用Dockerfile创建一个自定义图像。显然,重新运行可以正常工作,但是当我停止容器并再次启动它时,它不会启动并保持在退出0的状态 该图像由apache2和symfony web应用程序的一系列php模块组成 这就是Dockerfile结束的方式 RUN a2enmod rewrite CMD service apache2 restart ENTRYPOINT ["/usr/sbin/apache2ctl"] CMD ["-D", "FOREGROUND"] EXPOSE 80 我

我正在使用
Dockerfile
创建一个自定义图像。显然,重新运行可以正常工作,但是当我停止容器并再次启动它时,它不会启动并保持在退出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,但不确定其中的内容及其所起的作用。

entrypoint与容器不重新启动没有任何关系。您的问题很可能发生在其他地方,您需要查看容器中的日志以进行调试。
docker diff…
的输出也可能有助于查看容器文件系统中发生了什么变化

如果未定义
入口点
,docker将默认运行
CMD
。如果定义了
ENTRYPOINT
,则
CMD
中的任何内容都将成为ENTRYPOINT脚本的cli参数。因此,在上面的示例中,它将使用
/usr/sbin/apache2ctl-D前台启动(或重新启动)容器。在
docker run
命令中,在容器名称之后附加的任何内容都将覆盖
CMD
的值。您可以使用
docker run--ENTRYPOINT…
覆盖
ENTRYPOINT
的值


有关更多详细信息,请参阅。

入口点与容器未重新启动无关。您的问题很可能发生在其他地方,您需要查看容器中的日志以进行调试。
docker diff…
的输出也可能有助于查看容器文件系统中发生了什么变化

如果未定义
入口点
,docker将默认运行
CMD
。如果定义了
ENTRYPOINT
,则
CMD
中的任何内容都将成为ENTRYPOINT脚本的cli参数。因此,在上面的示例中,它将使用
/usr/sbin/apache2ctl-D前台启动(或重新启动)容器。在
docker run
命令中,在容器名称之后附加的任何内容都将覆盖
CMD
的值。您可以使用
docker run--ENTRYPOINT…
覆盖
ENTRYPOINT
的值


有关更多详细信息,请参阅。

谢谢你,BMitch-我想我们离得越来越近了。即使我在容器中停止apache2进程,容器也会退出。所以我认为容器停止启动和apache2服务停止启动的答案是一样的?对可能出现的问题有何建议?容器隔离一个流程(例如,
apache2ctl
)。当这个过程结束时,容器也会停止。再次感谢您-您认为我应该如何修改图像?就像听一个不同的过程-什么是无混乱的方式来做到这一点?我真的不知道我明白你想做什么。如果进程没有运行,您希望如何处理需要它的容器?容器只是通过apache为php应用程序提供服务。当从新映像运行时——只要apache运行,它就会工作;当我停止容器时-我以后无法启动容器(因为apache没有运行)-我该如何解决这个问题?谢谢你BMitch-我想我们离得越来越近了。即使我在容器中停止apache2进程,容器也会退出。所以我认为容器停止启动和apache2服务停止启动的答案是一样的?对可能出现的问题有何建议?容器隔离一个流程(例如,
apache2ctl
)。当这个过程结束时,容器也会停止。再次感谢您-您认为我应该如何修改图像?就像听一个不同的过程-什么是无混乱的方式来做到这一点?我真的不知道我明白你想做什么。如果进程没有运行,您希望如何处理需要它的容器?容器只是通过apache为php应用程序提供服务。当从新映像运行时——只要apache运行,它就会工作;当我停止容器时——从今以后我无法启动容器(因为apache没有运行)——我如何解决这个问题?