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.8Non-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」を指定する」を試す。
これでできた!やってみー!