DockerインターフェースはWi-Fiインターネットを切断します。

DockerインターフェースはWi-Fiインターネットを切断します。

私のラップトップでこの問題が発生しました。 Dockerコンテナを使用すると、docker runWi-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 localhostDockerコンテナを実行するかどうかにかかわらず動作し続けます)。

また、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
  1. 08:53まで、すべてがうまくいきます。 WiFiが動作し、Dockerコンテナは実行されません。
  2. 08:53:43にDockerコンテナを起動し、ネットワーク管理者は2つのコンテナdocker0だけでなく、新しいDockerコンテナの実行中に表示される他の一時的なネットワークインターフェイスにも接続しました。インターネットはあなたの指先にあります
  3. 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*リストに表示されます。動的サフィックスタグは異なりますが、プレフィックスは常にです。ifconfigdocker runveth*

だから解決策はネットワーク管理者にこのブリッジポートを無視するように依頼してください。

/etc/NetworkManager/NetworkManager.confこの設定の名前にワイルドカードを追加しましたveth*

[keyfile]
unmanaged-devices=interface-name:veth*

その後、NetworkManagerサービスを再起動しました。sudo systemctl restart network-manager.service

これを行った後、Dockerコンテナを実行してvethf6c1790

関連情報