Apache FQDN warning

Docker コンテナーで Apache を起動すると、以下の警告が表示されました。

Could not reliably determine the server’s fully qualified domain name, using 172.17.0.3. Set the ‘ServerName’ directive globally to suppress this message

メッセージに従って、Apache の設定ファイル httpd.confServerName ディレクティブを明示的に指定すると、警告が消えます。

ServerName ディレクティブは、Apache サーバが自分自身を示すときに使われるホスト名とポート番号を設定します。 通常、ServerName を指定しなくても、Apache が /etc/hosts を参照してホスト名を知ることができます。

コンテナ内の nsswitch.conf を見てみましょう。/etc/hosts が先に参照されます。

$ cat /etc/nsswitch.conf | grep host
hosts:          files dns

コンテナに --hostname--add-host を設定すれば、コンテナ内の /etc/hosts に追加されるので、Apache の設定ファイルを変更しなくても、シンプルに解決できます。

$ docker run --add-host 172.17.0.3:172.17.0.3 -p 8080:80 --rm httpd:2.4

$ curl 127.0.0.1:8080
<html><body><h1>It works!</h1></body></html>