とある試験で Dockerコンテナ からのみ特別に名前解決したい、というケースが生じました。
そこでホストマシンの Windows の hosts が使えないか検証したのでメモ。
検証
# yum install -y bind-utils
まず今回検証したい Dockerコンテナ はデフォルトだと nslookup
コマンドが入っていないのでインストール (bind-utils
の中に含まれている)。
#192.0.2.1 hoge.example1.jp
続いてホストマシンの Windows の hosts
を上述のように記述。あえてコメントアウトしてあります。
なお、 hoge.example1.jp
は公開 DNSサーバ にはレコードが存在しないドメインだとします。
# nslookup
> hoge.example1.jp
Server: 127.0.0.11
Address: 127.0.0.11#53
** server can't find hoge.example1.jp: NXDOMAIN
この状態で Dockerコンテナ 上から nslookup
。上述の通り DNSサーバ にレコードが存在しない前提なので、名前解決できません。
# nslookup
> example1.jp
Server: 127.0.0.11
Address: 127.0.0.11#53
Non-authoritative answer:
Name: example1.jp
Address: 192.0.2.11
逆に、 DNSサーバ にレコードが存在する example1.jp
は名前解決できます。想定通りですね。
192.0.2.1 hoge.example1.jp
続いてホストマシンの Windows の hosts
に記述をした場合です。
# nslookup
> hoge.example1.jp
Server: 127.0.0.11
Address: 127.0.0.11#53
Non-authoritative answer:
Name: hoge.example1.jp
Address: 192.0.2.1
名前解決できました。このことから、 Dockerコンテナ はホストマシンの hosts
を参照することが分かりました。
これで検証が進められます。