当前位置: 首页 > 面试题库 >

如何在不终止Docker容器的情况下重启apache2?

狄子真
2023-03-14
问题内容

我使用带有标签的php docker容器作为基础:

php:5.6-apache

当我尝试重新启动容器内的apache2时,容器停止:

root@phalconapp:/var/www/html# service apache2 restart
Restarting web server: apache2Terminated
root@phaclonapp:/var/www/html#
me@myLocalComputer:

如何在不停止容器的情况下重新启动apache2?

在将更改放入dockerfile之前,我想使用容器并对其进行自定义。我想安装一些扩展程序,为了使其正常工作,我需要重新启动apache才能使更改生效。

这是通过以下文件的日志文件:

Attaching to dltasklight_phlaconapp_1
phlaconapp_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
phlaconapp_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
phlaconapp_1 | [Mon May 30 10:19:24.556154 2016] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/5.6.22 configured -- resuming normal operations
phlaconapp_1 | [Mon May 30 10:19:24.556181 2016] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
phlaconapp_1 | [Mon May 30 10:21:11.754993 2016] [mpm_prefork:notice] [pid 1] AH00169: caught SIGTERM, shutting down
dltasklight_phlaconapp_1 exited with code 0

问题答案:

如果将apache用作保持运行容器的主要服务,则无法重新启动它。仅仅是因为您构建了图像并使用它设置了CMD。

CMD的主要目的是为执行中的容器提供默认值。这些默认值可以包含一个可执行文件,也可以忽略该可执行文件,在这种情况下,您还必须指定ENTRYPOINT指令。

尝试重新加载而不重新启动服务:

/etc/init.d/apache2 reload


 类似资料:
  • 问题内容: 我在Docker容器上安装了Nginx,并且正在尝试像这样运行它: 问题在于Nginx的工作方式,即初始进程会立即产生一个主要的Nginx进程和一些工作程序,然后退出。由于Docker仅监视原始命令的PID,因此容器将暂停。 如何防止容器停止?我需要能够告诉它绑定到第一个子进程,或者阻止Nginx的初始进程退出。 问题答案: 像所有行为良好的程序一样,可以配置为不自我守护。 使用htt

  • 我一直在玩流,然后我注意到当我执行以下操作时,它不会在控制台中产生输出: 我认为这是因为是一个非终止流方法,应该使用而不是来终止流并生成结果: 然而,是否有一种方法可以‘提前’终止流,使用一个自定义的终止方法(函数接口),它除了终止流之外什么都不做?..有没有一个适当的方法来利用Java现有的东西来做到这一点? 我知道我可以这样做: 但那感觉很浪费。

  • 首先,我不是Docker新手(或专家),只是不确定如何在不炸毁我当前容器的情况下完成此操作。 我在玩Postgres,并使用这个命令构建了一个容器,但没有意识到它不会将Postgres暴露在Docker之外 我希望其他系统能够访问这些数据。我不想删除容器,因为我已经做了相当多的配置。 在停止实例后,我尝试过在 中编辑容器 文件,但是在启动容器备份后,该文件被覆盖。 将端口暴露在容器之外的最佳实践是

  • 例如,在我的服务器上,当我想更新我的应用程序时,我只需要,工作得很好。 但有时,我需要重新构建(例如,我添加了一个npm依赖项,需要再次运行)。 在本例中,我执行。 我希望这样做: null 是预期的行为吗? 如何处理重建并在构建后启动新的重建? 也许我漏掉了一个特定的命令?或者拥有它有意义吗?

  • 我有一个dockerfile来启动Tomcat。我想从那个dockerfile创建而不运行图像,这样在docker图像中我就可以看到图像了。docker run-it将我登录到容器,但我不想创建容器并登录到它。 我可以通过哪个命令来实现这一点?

  • 问题内容: 我使用以下命令从映像启动docker容器: 当完成后,容器停止(我想这已停止),但它并没有被删除,因为我可以用这个命令来查看它: 有什么办法可以使用相同的参数将此容器保持由生成的数据? 问题答案: 是的,当初始命令完成执行后,容器将停止。 您可以使用以下方法启动已停止的容器: 如果要查看命令的输出,则应添加选项: PS。有一个,但用于重新启动正在运行的容器-我相信情况并非如此。