私のラップトップでこの問題が発生しました。 Dockerコンテナを使用すると、docker run
Wi-Fiインターネットが数秒後に動作を停止します。この側面をテストするためのイーサネット接続はありません。
この問題を解決する方法がわかりません。この問題に関連する2つのネットワークインターフェイスがあります。
- ワイヤレスネットワークインターフェース
wlp2s0
- ドッカーインターフェース
docker0
ネットワークI / Oがネットワークインターフェイスで起動すると、docker0
ネットワークインターフェイスで停止しますwlp2s0
。 Dockerコンテナの実行中はブラウザを介してWebページにアクセスできないため、Webブラウザを使用して確認できます。
Dockerで次のネットワーク設定を見ました。
docker network list
NETWORK ID NAME DRIVER SCOPE
5d408693425d bridge bridge local
2eba59b04a5f host host local
f22b30d7782a none null local
以下を使用するときにifconfig
これを確認してください。
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:e5ff:fe8a:b85c prefixlen 64 scopeid 0x20<link>
ether 02:42:e5:8a:b8:5c txqueuelen 0 (Ethernet)
RX packets 9034 bytes 1228570 (1.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9945 bytes 94278580 (94.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...
wlp2s0: flags=-28605<UP,BROADCAST,RUNNING,MULTICAST,DYNAMIC> mtu 1500
inet 192.168.1.54 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 2001:b07:6477:ebfa:e46f:631e:206c:8a9e prefixlen 64 scopeid 0x0<global>
ether 04:d3:b0:ee:2f:b9 txqueuelen 1000 (Ethernet)
RX packets 3771571 bytes 3664198427 (3.6 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2460874 bytes 1439515295 (1.4 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
sudo ifconfig wlp2s0 up
実行中のDockerコンテナを停止した後は、何もする必要はありません。インターネットが再び動作しています。
ネットワーク設定とは関係のないように見える/etc/docker
ファイルのみが表示されます(DNSエントリと同じですが存在しません)。key.json
/etc/docker/daemon.json
このファイルには、~/.docker/config.json
一部のプライベートDockerレジストリに対する認証のみが表示され、ネットワークとは関係ありません。関連がないと思われる他のトークン関連ファイルがあります。
$ ls -a ~/.docker/
. .. .buildNodeID config.json .token_seed .token_seed.lock
Dockerコンテナを実行した後にNetworkManagerを再起動すると、sudo systemctl restart network-manager.service
まだブラウザが利用できないか、たとえばインターネットにアクセスできなくなりますping 8.8.8.8
(ただしping localhost
Dockerコンテナを実行するかどうかにかかわらず動作し続けます)。
また、NetworkManager設定を変更してみました(参照:ここ)/etc/NetworkManager/NetworkManager.conf
追加して:
[keyfile]
unmanaged-devices=interface-name:docker0
その後、再起動サービスを使用してくださいsudo systemctl restart network-manager.service
。しかし、効果は同じです。 Dockerコンテナが起動してから数秒後、WiFi経由でインターネットにアクセスできなくなります。
ただし、これはサービスログを確認するとservice network-manager status
次の内容が表示されるため、ネットワーク管理者のバグや誤った設定に関連している可能性があります。
May 05 08:49:05 my-host NetworkManager[1269565]: <info> [1620200945.9900] dhcp6 (wlp2s0): option dhcp6_name_servers => '2001:b07:6477:ebfa:aa2b>
May 05 08:49:05 my-host NetworkManager[1269565]: <info> [1620200945.9900] dhcp6 (wlp2s0): state changed unknown -> bound
May 05 08:49:06 my-host NetworkManager[1269565]: <info> [1620200946.2184] manager: startup complete
May 05 08:53:43 my-host NetworkManager[1269565]: <info> [1620201223.6347] manager: (veth90dd212): new Veth device (/org/freedesktop/NetworkManage>
May 05 08:53:43 my-host NetworkManager[1269565]: <info> [1620201223.6358] manager: (veth9cfce50): new Veth device (/org/freedesktop/NetworkManage>
May 05 08:53:43 my-host NetworkManager[1269565]: <info> [1620201223.6374] device (veth90dd212): carrier: link connected
May 05 08:53:43 my-host NetworkManager[1269565]: <info> [1620201223.6389] device (veth9cfce50): carrier: link connected
May 05 08:53:43 my-host NetworkManager[1269565]: <info> [1620201223.6394] device (docker0): carrier: link connected
May 05 08:55:29 my-host NetworkManager[1269565]: <info> [1620201329.0433] manager: (veth90dd212): new Veth device (/org/freedesktop/NetworkManage>
May 05 08:55:29 my-host NetworkManager[1269565]: <info> [1620201329.0777] device (veth9cfce50): released from master device docker0
- 08:53まで、すべてがうまくいきます。 WiFiが動作し、Dockerコンテナは実行されません。
- 08:53:43にDockerコンテナを起動し、ネットワーク管理者は2つのコンテナ
docker0
だけでなく、新しいDockerコンテナの実行中に表示される他の一時的なネットワークインターフェイスにも接続しました。インターネットはあなたの指先にあります。 - 08:55:29 Dockerコンテナを停止し、ネットワーク管理者が
docker0
。インターネットが正常に戻った。ウェブページをもう一度見ることができます。
さまざまなLinux Ubuntu / DebianバージョンとDockerバージョンでこの問題が発生します。とにかく現在の設定は次のとおりです。
Ubuntu:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
ルーストアバウト:
$ docker --version
Docker version 20.10.6, build 370c289
ネットワーク管理者:
$ /usr/sbin/NetworkManager --version
1.22.10
$ nmcli --version
nmcli tool, version 1.22.10
私はこのページを何度も読んだ。https://docs.docker.com/network/bridge/私のラップトップでこれらのDockerコンテナを実行するとインターネットにアクセスできるため、Docker Bridgeが機能すると思います。しかし、Docker Webサイトのドキュメントは少し乾燥しており、これらのネットワーク問題を深く解決する方法がわかりません。
- ドッカーの設定にはどのような問題がありますか?
- ネットワーク管理者に設定エラーがありますか?
- 2つのネットワークインターフェイスが同時に連携するにはどうすればよいですか?
編集する:
Dockerコンテナを実行する前に:
$ ip route get 1.1.1.1
1.1.1.1 via 192.168.1.254 dev wlp2s0 src 192.168.1.54 uid 1000
cache
Dockerコンテナを実行した後:
$ ip route get 1.1.1.1
1.1.1.1 dev vethf6c1790 src 169.254.198.92 uid 1000
cache
$ ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
From 169.254.198.92 icmp_seq=1 Destination Host Unreachable
^C
vethf6c1790
新しいDockerコンテナを実行すると、常に新しいネットワークインターフェイスとして表示されます。
答え1
NetworkManagerはIPアドレスを管理し、ブリッジポートに割り当てようとしていることがわかりました(私はこれがveth*
ブリッジに関連していると仮定しています)。docker0
Dockerコンテナの起動を呼び出すと、すべてのアイテムがveth*
リストに表示されます。動的サフィックスタグは異なりますが、プレフィックスは常にです。ifconfig
docker run
veth*
だから解決策はネットワーク管理者にこのブリッジポートを無視するように依頼してください。。
/etc/NetworkManager/NetworkManager.conf
この設定の名前にワイルドカードを追加しましたveth*
。
[keyfile]
unmanaged-devices=interface-name:veth*
その後、NetworkManagerサービスを再起動しました。sudo systemctl restart network-manager.service
これを行った後、Dockerコンテナを実行してvethf6c1790
。