Dockerfileで例えばapt updateとかしてると下記エラー。
Err:1 http://security.debian.org/debian-security buster/updates InRelease Temporary failure resolving 'security.debian.org'
どうも、名前解決が出来てない。
理由は色々あると思うのですが、ホスト側のnameserverがdocker側のプライベートIP的なのと
似た感じになってるとdockerから見れて無くてエラーになるっぽい。
この場合はdockerのdns指定して立ち上げるようにする。
dnsはGoogleが公開してるDNSサーバ(8.8.8.8)使う事が多い模様
コマンドでやる場合
docker run --dns 8.8.8.8 -it busybox nslookup www.example.com
docker-compose
dns: 8.8.8.8
ただ、docker-composeはどうもうまくいかなかった。
docker-composeの場合、ホスト側の 「/etc/resolv.conf」がそのまま取り込まれてるっぽいのですが、
上記のdnsの指定が効かないんですよね。。。
何でなんだろ。
dockerのサービスに登録しちゃう場合
下記ファイルを編集(無かったら作成)
sudo vi /etc/docker/daemon.json { "dns": ["8.8.8.8"] } # あとリスタート sudo systemctl restart docker
※多分このやり方はあまりお勧めじゃないように思うけど、compose側の設定効かない時はこれでいくしかなさそう。
参考