コンテナが使うDNS

コンテナが利用するDNSのIPアドレスは/etc/resolv.confで指定するが、デフォルトでコンテナ起動時にホストの/etc/resolve.confの指定を引き継ぐ。

ただし、ホストで127.0.0.1(自分自身)などと指定されていた場合、コンテナ自身ではDNSが動いていないので、自動でグーグルの公開DNS(8.8.8.88.8.4.4)が指定されるようだ。

# ホストでDNSサーバを起動していた場合
cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 127.0.0.1

# コンテナ起動: Debianでcat
docker run --rm -it debian:9 cat /etc/resolv.conf
# Generated by NetworkManager

nameserver 8.8.8.8
nameserver 8.8.4.4

# グーグルDNSが指定されたことのログ: root権限
journalctl --unit docker --no-pager --lines 10 --priority info | grep 'resolv.conf'
 5月 19 23:45:04 local dockerd[1289]: time="2018-05-19T23:45:04.144472961+09:00" level=info msg="No non-localhost DNS nameservers are left in resolv.conf. Using default external servers: [nameserver 8.8.8.8 nameserver 8.8.4.4]"

ホストとは違うDNSを指定

ホストとは違うDNSをコンテナで利用したいなら、--dnsで指定。

# Debianでcat
# Cloudflareの公開DNSを使う
docker run --rm -it --dns 1.1.1.1 --dns 1.0.0.1 debian:9 cat /etc/resolv.conf
nameserver 1.1.1.1
nameserver 1.0.0.1