我刚开始使用 Docker,我正在遵循该 教程,该教程基本上显示了这些步骤:
- 像这样创建一个 Dockerfile:
From php:7.0-apache
copy src/ /var/www/html
EXPOSE 80
- 从我有我的 dockerfile 的地方构建容器:
$ docker build -t mytest .
- 生成图像“mytest”后,我运行它:
$ docker run -p 80 mytest
这就是我得到的错误:
AH00558:apache2:无法可靠地确定服务器的完全限定域名,使用 172.17.0.2。全局设置“ServerName”指令以抑制此消息 AH00558:apache2:无法可靠地确定服务器的完全限定域名,使用 172.17.0.2。全局设置“ServerName”指令以禁止显示此消息 [Sun Sep 17 16:25:12.340564 2017] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) PHP/7.0.23 已配置 – 正在恢复正常操作 [Sun Sep 17 16:25:12.340666 2017] [core:notice] [pid 1] AH00094:命令行:’apache2 -D FOREGROUND’
所以,我不知道如何解决它。任何想法?
原文由 IgorAlves 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想提供另一种(可能更像 Docker-ish)解决警告消息的方法。但首先,在盲目设置
ServerName
之前, 了解 Apache 实际在做什么来计算域名是有意义的。 http://ratfactor.com/apache-fqdn.html 上有一篇很好的文章解释了这个过程。一旦我们可以确认
getnameinfo
是 Apache 用来查找名称的名称,并且它使用/etc/nsswitch.conf
来确定首先查找的位置,我们就可以弄清楚要修改什么。如果我们查看容器内的
nsswitch.conf
我们可以看到它在外部 DNS 之前的/etc/hosts
文件中查找主机:知道了这一点,也许我们可以在 Docker 运行时影响文件而不是将其添加到我们的配置文件中?
如果我们查看 Docker 运行参考文档,在 https://docs.docker.com/engine/reference/run/#managing-etchosts 的
/etc/hosts
文件中有一节。它提到:因此,如果我们只是设置容器主机名,它将被添加到
/etc/hosts
这将解决 Apache 警告。幸运的是,使用--hostname
或-h
选项很容易做到这一点。如果我们将其设置为完全限定的域名,Docker 会将其设置在我们的/etc/hosts
文件中,Apache 会选择它。试试这个很容易。带有警告的示例(无主机名):
现在将
-h
选项设置为完全限定的域名:希望这有助于回答这个问题并提供一些关于 Apache 和完全限定域名的知识。