我正在运行 Ubuntu 14.04 上的 Docker 版本 1.4.1,构建版本为 5bc2ff8。当我使用 docker run
运行任何容器时,经过几分钟后我的 docker0
桥 "死掉",容器无法再连接网络。在连接断开之前,运行 ifconfig
命令会报告一个类似于以下格式的 docker0
设备的 inet addr
:
docker0 Link encap:Ethernet HWaddr 56:84:7a:fe:97:99
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
[... etc.]
但是连接断开后,ifconfig
显示 ipv4 地址已经消失:
docker0 Link encap:Ethernet HWaddr 56:84:7a:fe:97:99
inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8116 errors:0 dropped:0 overruns:0 frame:0
TX packets:15995 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2444859 (2.4 MB) TX bytes:17440729 (17.4 MB)
重新启动 Docker(例如使用
sudo service docker restart
命令)可以使设备重新运行,但是所有容器都会停止并且问题会再次出现。我无法可靠地让任何东西运行超过几分钟。对于大多数项目来说,甚至无法完成 docker build
。
- 可能是什么原因导致这种情况?
- 如何进行诊断?
- 有哪些可能的解决方案?
谢谢!
更新:我可以通过使用命令 docker run -t -i ubuntu /bin/bash
启动一个容器,然后使用 ctrl-d
退出来可靠地触发此问题。当我这样做时,我在 /var/log/syslog
中看到以下内容:
myhost kernel: docker0: port 1(veth80ddeaf) entered disabled state
myhost kernel: device veth80ddeaf left promiscuous mode
myhost kernel: docker0: port 1(veth80ddeaf) entered disabled state
'
myhost dhclient: Internet Systems Consortium DHCP Client 4.2.4
myhost dhclient: Copyright 2004-2012 Internet Systems Consortium.
myhost dhclient: All rights reserved.
myhost dhclient: For info, please visit https://www.isc.org/software/dhcp/
myhost dhclient:
myhost dhclient: Listening on LPF/docker0/56:84:7a:fe:97:99
myhost dhclient: Sending on LPF/docker0/56:84:7a:fe:97:99
myhost dhclient: Sending on Socket/fallback
myhost kernel: IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready
更新 #2:失败的频率似乎取决于容器运行的时间。例如:
docker run -i -t ubuntu sleep 0
--> `docker0` "survives" ~100% of the time
docker run -i -t ubuntu sleep 1
--> `docker0` survives ~80% of the time
docker run -i -t ubuntu sleep 5
--> `docker0` survives ~0% of the time
--net="host"
作为解决方法。这样会起作用吗? - Maxim--net="host"
会防止我将容器的网络容器化。所以这不是我的问题的解决方案 - 虽然感谢您的建议! - Bosh