2023-4-10 日更新
搞 Debian 系统的 LXD 时,发现了 Debian 对 lxd 的已知问题跟踪。似乎是 Docker 的原因。
已知问题 跟踪链接:https://wiki.debian.org/LXD
要使用一些办法来规避
Running LXD and Docker on the same host can cause connectivity issues. A common reason for these issues is that Docker sets the FORWARD policy to DROP, which prevents LXD from forwarding traffic and thus causes the instances to lose network connectivity. There are two different ways you can fix this:
As outlined in bug 865975, message 91, you can add net.ipv4.ip_forward=1 to /etc/sysctl.conf which will create a FORWARD policy that docker can use. Docker then won't set the FORWARD chain to DROP when it starts up.
Alternately, you can use the following command to explicitly allow network traffic from your network bridge to your external network interface: iptables -I DOCKER-USER -i <network_bridge> -o <external_interface> -j ACCEPT (from the upstream LXD documentation)
系统为Ubuntu 20.04
使用 LXD/LXC 版本为当前最新的 4.24
症状表现为
- 容器原来可以正常联网,可以ping通宿主机的局域网和外网,但是重启机器后,容器突然就无法联网,即无法ping通和访问宿主机的局域网和外网。
- 并且在正常联网和突然无法联网之间,你没有给宿主机和容器做任何的网络设定。
- 但是proxy设备却正常,外部机可以通过容器的proxy设备访问容器的本地localhost网络。
- 并且,手动重启容器,删除后重建容器,手动重启宿主机,删除和重建网桥,手动给容器删除和新增网桥,调整容器和宿主机的路由表和iptables,都没有用。但卸载LXD/LXC后重装 LXD/LXC 有效。
解决方法:
找了和试了很多办法,终于成功找到免于重装LXD的办法了
在 root 权限,使用命令
sudo lxd shutdown
彻底关闭 lxd 服务,然后使用命令重启 lxd 服务
sudo lxd
现在再开启容器,可以发现容器可以联网了。。。
原因推测:
LXD/LXC的网络服务有bug。bug原因可能为LXD的服务先于某些服务或驱动,然后过早地启动,导致网络服务内部配置有误。手动重启LXD服务,可以使LXD的网络服务以现行的状态重新配置网络服务,从而能连上网络。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)