docker 启动后 Wifi 连接断开

Posted

技术标签:

【中文标题】docker 启动后 Wifi 连接断开【英文标题】:Wifi connection dropped after docker start 【发布时间】:2017-07-20 20:57:08 【问题描述】:

我通过 Wifi 登录到我的 Lubuntu 16.04.2 LTS 服务器,每次启动 docker 容器时,我的连接都会断开。因为我对 docker 比较陌生,我只能猜测这与 dockers 虚拟网络的创建有关。我还应该提到我禁用了 ipv6,但如果启用它没有任何区别。

这是我的syslog,它显示了当我运行sudo docker run -it ubuntu bash 时会发生什么。在它冻结之前,我可以看到容器/ubuntu 提示 2-3 秒。使用--net=host 运行它可以,但不是我想要的。

ifconfig 显示

docker0   Link encap:Ethernet  HWaddr 02:42:8d:8b:b7:4c  
          inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:162 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:536 (536.0 B)  TX bytes:9678 (9.6 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:538 errors:0 dropped:0 overruns:0 frame:0
          TX packets:538 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:49592 (49.5 KB)  TX bytes:49592 (49.5 KB)

vethee1cf14 Link encap:Ethernet  HWaddr ba:53:4c:08:89:64  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:167 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:648 (648.0 B)  TX bytes:9888 (9.8 KB)

wlp2s0    Link encap:Ethernet  HWaddr f4:06:69:5d:ba:f6  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:3082 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2916 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:556197 (556.1 KB)  TX bytes:569381 (569.3 KB)

docker network inspect bridge 显示

[
    
    "Name": "bridge",
    "Id": "8ec46d17f5cba798c8aba5c8457e019dcb24eade1285054f59c3430c33ff74f8",
    "Created": "2017-03-04T10:44:27.966018717+01:00",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv6": false,
    "IPAM": 
        "Driver": "default",
        "Options": null,
        "Config": [
            
                "Subnet": "172.17.0.0/16",
                "Gateway": "172.17.0.1"
            
        ]
    ,
    "Internal": false,
    "Attachable": false,
    "Containers": ,
    "Options": 
        "com.docker.network.bridge.default_bridge": "true",
        "com.docker.network.bridge.enable_icc": "true",
        "com.docker.network.bridge.enable_ip_masquerade": "true",
        "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
        "com.docker.network.bridge.name": "docker0",
        "com.docker.network.driver.mtu": "1500"
    ,
    "Labels": 
    
]

随着 docker 停止 ip a 显示

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether f4:06:69:5d:ba:f6 brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.21/24 brd 192.168.178.255 scope global wlp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::f606:69ff:fe5d:baf6/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:6f:0c:38:7a brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever

我的 Wifi 连接会怎样?任何帮助表示赞赏。如果更多信息对您有帮助,请告诉我。

更新

谢谢你的帮助。根据我目前得到的回复,我的网络配置似乎有问题。

cat /etc/NetworkManager/NetworkManager.conf 显示

[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq

[ifupdown]
managed=false

cat /etc/network/interfaces 显示

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

由于我没有进行特殊配置,所以对我来说一切都很好。有什么建议我可以在哪里寻找信息或如何解决这个问题?

更新

nmcli dev 显示

DEVICE       TYPE      STATE        CONNECTION 
docker0      bridge    connected    docker0    
wlp2s0       wifi      unavailable  --         
vethf9342a9  ethernet  unmanaged    --         
lo           loopback  unmanaged    --  

当 docker 运行时

DEVICE   TYPE      STATE      CONNECTION 
docker0  bridge    connected  docker0    
wlp2s0   wifi      connected  meins      
lo       loopback  unmanaged  --  

当 docker 停止时。

更新

/etc/NetworkManager/NetworkManager.conf 中添加了以下行,以使 NetworkManager 忽略 docker 接口。

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

网络管理器忽略了接口,但问题仍然存在。所以我的猜测是,这是我的 DHCP 配置的问题。

更新

DHCP 客户端似乎确实有问题。禁用它会有所帮助。有什么解决方法的建议吗?

【问题讨论】:

您能否在您的问题中包含docker network inspect bridge 的输出。此外,当 docker 停止并且 wifi 正常工作时,ip a 会显示什么? 您是否还可以包含用于启动容器的完整 docker run 命令(或撰写文件)? @BMitch:在描述中包含了完整的命令。 - 事实上,确切的命令似乎并不重要。创建虚拟 docker 网络的所有命令都会导致我的 wifi 断开连接。 您的网络配置有问题。您的容器网络看起来像是在践踏您的主机网络。 veth48067d8:使用静态地址 192.168.178.21/24 wlp2s0:使用静态地址 192.168.178.21/24 我面临同样的问题,@NaN 你有没有找到任何解决方案?我在这里找不到任何答案。 【参考方案1】:

Ubuntu 18.04 上的同样问题。

我认为将以下内容添加到文件/etc/NetworkManager/NetworkManager.conf 中已经解决了这个问题:

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

你还需要做一些其他的事情:

    停止所有 docker 容器; sudo service network-manager restart重启网络,现在你的wifi应该可以正常使用了; 再次启动您的 docker 容器,我的 wifi 目前仍在工作。

2019 年 3 月 14 日

参考:https://askubuntu.com/a/1009402/620445

【讨论】:

【参考方案2】:

从您的日志中对我来说最突出的几行是:

Mar  1 13:54:44 kodi NetworkManager[1054]: <info>  [1488372884.3614] device (docker0): link connected
Mar  1 13:54:44 kodi dhcpcd[1240]: veth48067d8: IAID 3a:d3:8a:28
Mar  1 13:54:44 kodi dhcpcd[1240]: veth48067d8: using static address 192.168.178.21/24
Mar  1 13:54:44 kodi dhcpcd[1240]: wlp2s0: preferring 192.168.178.21 on veth48067d8
Mar  1 13:54:44 kodi dhcpcd[1240]: veth48067d8: adding route to 192.168.178.0/24
Mar  1 13:54:44 kodi dhcpcd[1240]: veth48067d8: adding default route via 192.168.178.1

在我自己的环境中,NetworkManager看到链接连接后,只看到如下:

Mar  5 12:32:39 bmitch-asusr556l NetworkManager[827]: <info> devices removed (path: /sys/devices/virtual/net/veth365c591, iface: veth365c591)
Mar  5 12:32:39 bmitch-asusr556l NetworkManager[827]: <info> (vethf29a6bb): link connected
Mar  5 12:32:41 bmitch-asusr556l avahi-daemon[835]: Joining mDNS multicast group on interface vethf29a6bb.IPv6 with address fe80::34c0:66ff:fe89:26ec.
Mar  5 12:32:41 bmitch-asusr556l avahi-daemon[835]: New relevant interface vethf29a6bb.IPv6 for mDNS.
Mar  5 12:32:41 bmitch-asusr556l avahi-daemon[835]: Registering new address record for fe80::34c0:66ff:fe89:26ec on vethf29a6bb.*.

我在上面的 cmets 中的问题是如何确定您是否以某种方式将容器 IP 硬编码到 192.168.178.x 网络。由于这没有发生,您应该看到容器以 172.17.0.x 地址旋转。您的环境中似乎存在 NetworkManager 或 dhcpd 配置错误,它试图为 docker 容器 (veth) 提供与您的无线 (wlp2s0) 使用的 IP 相同的 IP,然后该容器被列为首选连接.

【讨论】:

没有向下滚动到足以看到这个。您的网络配置有问题。【参考方案3】:

我查看了您发布的系统日志,似乎存在一些身份验证问题:

Mar  1 13:54:45 kodi kernel: [351489.718503] wlp2s0: deauthenticating from 34:31:c4:0c:bf:24 by local choice (Reason: 3=DEAUTH_LEAVING)
Mar  1 13:54:45 kodi dhcpcd[1240]: veth48067d8: carrier acquired
Mar  1 13:54:45 kodi wpa_supplicant[1259]: wlp2s0: CTRL-EVENT-DISCONNECTED bssid=34:31:c4:0c:bf:24 reason=3 locally_generated=1
Mar  1 13:54:45 kodi NetworkManager[1054]: <warn>  [1488372885.1783] sup-iface[0x23b4210,wlp2s0]: connection disconnected (reason -3)
Mar  1 13:54:45 kodi kernel: [351489.751908] IPv6: ADDRCONF(NETDEV_UP): wlp2s0: link is not ready

暂时我只能说,请通过我在下面粘贴的链接:

https://docs.docker.com/engine/admin/#logs-1

http://www.tutorialspoint.com/articles/how-to-install-and-use-docker-on-ubuntu-16-04

如果这不能解决您的问题,请按照调试步骤发布更合适的日志。

【讨论】:

以上是关于docker 启动后 Wifi 连接断开的主要内容,如果未能解决你的问题,请参考以下文章

我的手机wifi连接后为啥会自动断开

手机WiFi总是在连接后又马上断开之间重复是怎么回事

手机连接WiFi总是自动断开怎么办?

电脑上连接的wifi为啥会自动断开,后面就连不上wifi了,重启后又能连得上?

为啥手机连接wifi总是自动断开?

断开 USB 后,ADB over WiFi 连接丢失 [重复]