Docker启动后,Wifi连接断开。

18

我通过Wifi登录到我的Lubuntu 16.04.2 LTS服务器,每次启动docker容器时,我的连接都会断开。由于我对docker相对较新,所以我只能猜测这与docker的虚拟网络创建有关。我还应该提到,我已经禁用了ipv6,但如果启用也没有任何区别。

这是我的syslog,它显示了我运行sudo docker run -it ubuntu bash时发生的情况。我可以看到container/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 并且 Wi-Fi 正常工作的情况下,ip a 显示什么? - BMitch
你能否同时包含使用的完整 docker run 命令(或 compose 文件)来启动容器? - BMitch
@BMitch:在说明中包含了完整的命令。确实,确切的命令似乎并不重要。所有创建虚拟Docker网络的命令都会导致我的Wi-Fi断开连接。 - NaN
你的网络配置有些问题。你的容器网络似乎正在侵占你的宿主机网络。veth48067d8:使用静态地址192.168.178.21/24 wlp2s0:使用静态地址192.168.178.21/24 - user2105103
1
我也遇到了同样的问题,@NaN 你找到解决方案了吗?我在这里找不到任何答案。 - Keyur Patel
显示剩余2条评论
5个回答

9

在Ubuntu 18.04上也存在相同的问题。

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

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

您还需要做其他事情:
  1. 停止所有的docker容器;
  2. 通过sudo service network-manager restart重启网络,现在您的wifi应该正常工作;
  3. 再次启动您的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.*.

我在上面的评论中提出的问题是为了确定您是否将容器IP硬编码到192.168.178.x网络中。既然这种情况没有发生,您应该会看到容器以172.17.0.x地址启动。在您的环境中,NetworkManager或dhcpd可能存在配置错误,尝试为具有与无线电(wlp2s0)使用的相同IP的docker容器(veth)分配IP,然后将容器列为首选连接。


没有向下滚动足够的距离来查看这个。你的网络配置出了很大的问题。 - user2105103

1
在我的情况下,在启动docker后,我的Ubuntu 18.04上的互联网停止工作,并且即使在停止docker服务后仍然无法使用。
我解决问题的方法是使用docker network prune删除所有docker网络,然后互联网就重新开始工作了。
我不确定问题出在哪里,但我猜测可能与一些错误应用的防火墙规则(由于某种原因)或网络之间的冲突有关,这影响了互联网,但这只是一个猜测。
OP的问题可能与某些配置不正确的网络有关,在启动容器时默认重用该网络,但在net=host时不重用该网络,因此删除它应该可以解决问题(如果这是问题的话)。

也为自己修好了,到底是怎么回事.. - good_evening

0

虽然我不是这个领域的专家,但我能够克服有线连接类似问题的方法就是将路由器设置中的本地网络地址移动到一些非正统的地方,比如69.69.69.xx。

无法确定网络断开的原因,但我猜测它与Docker虚拟网络干扰物理网络有关。


0

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接