我刚刚开始使用Docker,我遵循的是tutorial,它基本上显示了以下步骤:
1.创建一个如下所示的Dockerfile:
From php:7.0-apache
copy src/ /var/www/html
EXPOSE 80
1.从我的dockerfile所在的位置构建容器:
$ docker build -t mytest .
1.生成“mytest”映像后,我使用以下命令运行它:
$ docker run -p 80 mytest
这就是我所得到的错误:
AH00558:apache2:无法使用172.17.0.2可靠地确定服务器的完全限定域名。全局设置“ServerName”指令以禁止显示以下消息AH 00558:apache 2:无法使用172.17.0.2可靠地确定服务器的完全限定域名。全局设置“ServerName”指令以抑制此消息[Sun Sep 17 16:25:12.340564 2017] [mpm_prefork:notice] [pid 1] AH 00163:Apache/2.4.10(Debian)PHP/7.0.23已配置--恢复正常操作[2017年9月17日星期日16:25:12.340666] [核心:通知] [pid 1] AH 00094:命令列:'apache 2-D前景'
所以我不知道怎么解决。有什么想法吗?
6条答案
按热度按时间wtzytmuj1#
我想提供另一种(可能更像Docker-ish)解决警告消息的方法。但首先,在盲目地设置
ServerName
之前,了解 * Apache实际上是 * 做什么来计算域名是有意义的。http://ratfactor.com/apache-fqdn.html上有一篇很好的文章解释了这个过程。一旦我们能够确认
getnameinfo
是Apache用来查找名称的,并且它使用/etc/nsswitch.conf
来确定查找的第一步,我们就可以确定要修改的内容。如果我们检查容器内的
nsswitch.conf
,我们可以看到它在外部DNS之前在/etc/hosts
文件中查找主机:知道了这一点,也许我们可以在Docker运行时影响文件,而不是将其添加到我们的配置文件中?
如果我们看一下Docker运行参考文档,在www.example.com上有一节关于
/etc/hosts
文件的内容https://docs.docker.com/engine/reference/run/#managing-etchosts,其中提到:您的容器在/etc/hosts中将包含一些行,这些行定义了容器本身的主机名以及localhost和其他一些常见内容。
因此,如果我们只设置容器主机名,它将被添加到
/etc/hosts
,这将解决Apache警告。幸运的是,这是非常容易做到的--hostname
或-h
选项。如果我们设置为一个完全限定的域名,Docker将设置它在我们的/etc/hosts
文件,Apache将获得它。这是非常容易尝试的。示例与警告(没有主机名):
现在,将
-h
选项设置为完全限定域名:希望这有助于回答这个问题,并提供一些关于Apache和完全限定域名的知识。
q5iwbnjs2#
这不是一个错误,它只是一个警告,您可以放心地忽略它。它的意思是
ServerName
没有设置,因此它将假定计算机IP相同。如果查看
/etc/apache2/sites-available
中存在的默认配置,您会发现000-default.conf
和default-ssl.conf
ServerName指令在配置中已注解
因此,如果您担心警告,您应该将其更改为您想要的值,如下所示
你需要在你的文件夹中创建一个配置文件,然后用Dockerfile从默认配置文件覆盖这些文件。然后警告就会消失。
z3yyvxxp3#
问题:
运行Docker文件时出现以下错误:
AH00558:apache2:无法使用172.17.0.2可靠地确定服务器的完全限定域名。请全局设置“ServerName”指令以禁止显示此消息
解决方案:
后藤
root
后藤
etc
文件然后后藤
apache2
然后是nano
apache2.conf
文件然后在
# The directory where shm and other runtime files will be stored.
行下方输入新行(Enter)并写入:保存文件并退出root,然后再次运行
docker run
命令,它将工作。同一问题的Youtube视频参考链接:Watch
jqjz2hbq4#
要避免出现该警告,可以将ServerName设置为您的IP。
请参见以下示例:
tagplus5/docker-php/7-apache/Dockerfile
(尽管iproute在Mac上的工作方式可能有所不同:这取决于您的主机。请参阅iproute2mac第8期)
oyjwcjzk5#
我过去常加
或者添加到Dockerfile或入口点文件(如果使用的话)。
ulmd4ohb6#
如果您正在使用Docker,请执行以下操作:将ServerName localhost从Docker文件添加到apache2.conf,然后重新启动服务器
这应该可以消除警告。
您也可以从终端执行此操作
不要忘记重新启动服务器
服务器重新启动后,错误应消失。