Apache Dockerfile中的重新启动有意义吗?

Apache Dockerfile中的重新启动有意义吗?,apache,docker,dockerfile,Apache,Docker,Dockerfile,在Dockerfile中重新启动有意义吗? 在我的例子中,我得到了一个带有apachehttpd的Dockerfile。文件中包含一些配置Web服务器的操作。在文件的末尾,它说运行服务apache2 restart。我觉得这很奇怪 我仍然习惯于Docker的概念。我将docker映像概念化为安装cd,将docker容器概念化为安装机器。 Dockerfile本身就是刻录CD映像之前要遵循的一组指令。 从这个角度来看,在刻录CD之前重启apache似乎是无用的。我对这个概念的理解正确吗? 或者,或

在Dockerfile中重新启动有意义吗?

在我的例子中,我得到了一个带有apachehttpd的Dockerfile。文件中包含一些配置Web服务器的操作。在文件的末尾,它说
运行服务apache2 restart
。我觉得这很奇怪

我仍然习惯于Docker的概念。我将docker映像概念化为安装cd,将docker容器概念化为安装机器。 Dockerfile本身就是刻录CD映像之前要遵循的一组指令。 从这个角度来看,在刻录CD之前重启apache似乎是无用的。我对这个概念的理解正确吗?
或者,或者,我的说法正确吗,这个文件在最后不需要重新启动?

你是对的,这没有多大意义。它将尝试启动一个httpd,因此可能会进行一些初始文件设置

您可能会看到有人试图在容器内启动HTTPD,例如
CMD
/
ENTRYPOINT
-在这里它更有意义,因为
restart
实际上意味着“停止并启动”


停止是多余的,但无害的,所以如果您不确定httpd是否已经运行,那么这实际上是启动httpd的一种相当常见的方法

尽管您可以使用
RUN
指令重新启动像
apache2
这样的服务,但由于通过
Dockerfile
创建图像的灵活性,不推荐使用这种方法。提及

RUN最常见的用例可能是的应用程序 容易得到。使用apt get时

指令

CMD指令应用于运行包含的软件 您的图像,以及任何参数。几乎应该始终使用CMD 以CMD[“可执行”、“参数1”、“参数2”…]的形式。因此,如果 图像是一个服务(Apache、Rails等),您可以运行一些东西 像CMD[“apache2”,“-DFOREGROUND”]。事实上,这种形式的 对于任何基于服务的映像,建议使用说明


因此,使用
service restart
CMD
指令将更合适

谢谢Sobrique。我认为这个apachehttpd(d!!)是自动启动的。正如您所建议的,它应该使用
CMD
/
ENTRYPOINT
来启动deamon,对吗?我通常会建议自己编写一个“run.sh”脚本,因为这样您就可以总结一些启动前命令。这并不能真正回答我的问题。这不是是否使用run/cmd的问题;我的问题是,在这种情况下重新启动是否有意义。我理解,重新启动服务在这两种指令中都没有意义,尽管dockerfile提供了灵活性。在大多数情况下,如果您正在运行守护程序,建议使用CMD指令。