kiyasuの日記

ハッピーうれピーよろしく哀愁

Docker Desktop For Windowsのコンテナbuild時にDNSサーバーを指定したい

前回までのあらすじ

どうやらビルドしたコンテナはネットワークにはつながっているようだ。単体でRUNしたときにpingは返ってきていた。やはりホスト名が解決されてないことが原因のようだ

コンテナのDNSサーバーを指定する

使うDNSサーバーは8.8.8.8(Google Public DNS)。調べ方は「設定後、nslookup www.google.comをやる」です

起動時に指定する

docker run --dns=8.8.8.8 -it [Image ID]

だめでした。

C:>nslookup www.google.com
Server: UnKnown
Address: 172.19.48.1

*** UnKnown can't find www.google.com: Server failed

起動後に指定する

netsh interface ipv4 set dnsservers "Ethernet" static 8.8.8.8 both

これならいけました。

ちなみにネットワークの名前(上のEthernet)は既に存在するネットワーク名を指定しないと"The filename, directory name, or volume label syntax is incorrect"と言われます。

C:>netsh interface ipv4 show interface

これでしらべましょう。で、設定して以下の結果を得られました。

C:>nslookup www.google.com
Server: dns.google
Address: 8.8.8.8

Non-authoritative answer:
Name: www.google.com
Addresses: 2404:6800:4004:825::2004
216.58.220.132

いけました。

しかし問題はそうではなかった

よくよく考えてみると、今やろうとしていることは「Dockerfileでイメージから新規コンテナをビルド中にIPアドレス解決ができない」ということなので、上記の「作ったコンテナの中でdnsを指定する」はちょっと違う。

docker image build時に、DNSの設定をなんとかしたい - CLOVER🍀

となると、今度はこちらが参考になりそうだ。

それで、この「ホスト側のネットワークを使う」を試そうとしたんですが

docker build --network host xxxxxxx
..... network host not found

とのこと。

どうやらホストがLinuxの場合でしかhostのnetworkは使えないようだ

The host networking driver only works on Linux hosts, and is not supported on Docker Desktop for Mac, Docker Desktop for Windows, or Docker EE for Windows Server.

なので、今度は同ブログの「Dockerデーモンのオプションに「--dns」を指定する」を試す。

これでできた!やってみー!