クリーンなUbuntu MATE 16.04.6 LTSがインストールされています。
私はここでリポジトリからDockerをインストールしました:
Sudo apt-get install docker.io
ユーザーをdocker
グループに追加して
Sudo usermod -a -G docker $USER
それから私はUbuntu 19.04コンテナをダウンロードしました
docker pull ubuntu:19.04
その中でapt update
を実行しようとしました
docker run -it ubuntu:19.04 apt update
しかし、ネットワークエラーが発生しました:
$ docker run -it ubuntu:19.04 apt update Err:1 http://archive.ubuntu.com/ubuntu disco InRelease Temporary failure resolving 'archive.ubuntu.com' Err:2 http://security.ubuntu.com/ubuntu disco-security InRelease Temporary failure resolving 'security.ubuntu.com' Err:3 http://archive.ubuntu.com/ubuntu disco-updates InRelease Temporary failure resolving 'archive.ubuntu.com' Err:4 http://archive.ubuntu.com/ubuntu disco-backports InRelease Temporary failure resolving 'archive.ubuntu.com' Reading package lists... Done Building dependency tree Reading state information... Done All packages are up to date. W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/disco/InRelease Temporary failure resolving 'archive.ubuntu.com' W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/disco-updates/InRelease Temporary failure resolving 'archive.ubuntu.com' W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/disco-backports/InRelease Temporary failure resolving 'archive.ubuntu.com' W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/disco-security/InRelease Temporary failure resolving 'security.ubuntu.com' W: Some index files failed to download. They have been ignored, or old ones used instead.
コンテナ内の/etc/resolv.conf
は次のとおりです。
$ docker run -it ubuntu:19.04 cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 8.8.8.8 nameserver 8.8.4.4
ホストシステムにはインターネットがあり、NetworkManagerはデフォルト設定で使用されます。
$ cat /etc/NetworkManager/NetworkManager.conf [main] plugins=ifupdown,keyfile,ofono dns=dnsmasq [ifupdown] managed=false
システム上のすべてのファイルは変更されません-debsums --changed --all --silent
コマンドは何も返しません。
iptables -S
の要求された出力は以下のとおりです。
$ Sudo iptables -S
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
DockerコンテナーからDNS(名前解決)を修正するには、どの設定を変更する必要がありますか?
ノート:
#dns=dnsmasq
)の無効化について知っていますが、このオプションを使用したくありません。ifupdown
を使用します。したがって、NetworkManagerがこの問題の原因です。docker run
のソリューションは非常に簡単です。--network Host
オプションを使用してホストネットワークを選択する必要があります。
docker run -it --network Host ubuntu:19.04 apt update
そして、問題は解決されます。
ただし、docker build
には--network
オプションのみが 18.04 LTSから のみで始まることにも注意してください。したがって、16.04 LTSでdocker build --network Host
が必要な場合は、docker.comのdocker-ce
パッケージを使用する必要があります。