docker コンテナの hosts と resolv.conf を調査することがあったので、その際に使用したコマンドとオプションをまとめておきます。
/etc/hosts
に追加
--add-host
オプションを使用する。
https://docs.docker.jp/engine/reference/commandline/run.html#hosts-add-host
コンテナ内の/etc/hosts
の中身
> docker run --rm busybox cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 6fc807297ca7
--add-host
オプションを指定すると、
> docker run --rm --add-host=local_dev:123.4.5.6 busybox cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
123.4.5.6 local_dev
172.17.0.2 9b900d1f9346
123.4.5.6 local_dev
が追加された。
/etc/resolv.conf
を変更
--dns=IPアドレス...
オプションを使用する。
https://docs.docker.jp/engine/userguide/networking/default_network/donfigure-dns.html
コンテナ内の/etc/resolv.conf
の中身
> docker run --rm busybox cat /etc/resolv.conf
# DNS requests are forwarded to the host. DHCP DNS options are ignored.
nameserver 192.168.65.5
--dns
オプションを指定すると、
> docker run --rm --dns=8.8.8.8 busybox cat /etc/resolv.conf
nameserver 8.8.8.8
コンテナが使用するネームサーバが変わりました。
> docker run --rm --dns=8.8.8.8 tutum/dnsutils dig google.com
; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54158
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 299 IN A 172.217.26.14
;; Query time: 76 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Aug 19 03:45:17 UTC 2021
;; MSG SIZE rcvd: 55
参考
ping
、curl
、nslookup
を使用したときに、名前解決されるものとされないものがあるみたいです。
https://qiita.com/tksugimoto/items/804e0051bf1b1ddab168