You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker0仅首次运行有可访问IP Docker容器重启后无法加载服务求助

问题根因定位

对比两次networkctl的输出差异可以确定核心问题:容器首次启动时,Docker创建的对应网桥(本次为br-39aac8ad8ef3)状态为routable,容器停止后systemd-networkd检测到网桥下没有活跃的容器网卡连接,就将网桥标记为no-carrier,自动清除了该网桥对应的iptables转发规则和路由表项,导致后续重启容器后流量无法正常转发到容器内。
Strato托管服务器默认启用了systemd-networkd的全网卡接管策略,和你本地虚拟机的默认网络配置不一致,这就是虚拟机运行正常、服务器出问题的原因。

排查验证步骤
  • 重启容器无法访问时,先执行iptables -t nat -L DOCKER,对比重启Docker前后的规则,确认是否缺少对应端口的转发规则
  • 执行ip route show,确认网桥对应的网段路由是否存在,异常状态下应该看不到br-39aac8ad8ef3对应的路由条目
  • 执行networkctl status br-39aac8ad8ef3,可以看到systemd-networkd标记该网卡为无连接状态
永久解决方案

方案1:禁用systemd-networkd对Docker网桥的管理

创建/etc/systemd/network/10-docker-bridge.network文件,写入如下配置:

[Match]
Name=br-* docker0 veth*

[Link]
Unmanaged=yes

配置完成后执行以下命令生效:

systemctl daemon-reload
systemctl restart systemd-networkd
systemctl restart docker

这个方案让systemd-networkd不对Docker相关的虚拟网卡做状态管理,完全交给Docker自己处理,是最稳定的解决方案。

方案2:升级Docker版本

你当前使用的Docker 20.10.6是2021年的旧版本,该版本存在和systemd-networkd联动的已知bug,升级到20.10.21以上的稳定版即可修复该问题:

# 卸载旧版本
apt remove docker.io docker-ce docker-ce-cli -y
# 安装官方最新稳定版
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
apt update && apt install docker-ce docker-ce-cli containerd.io -y
临时替代方案(不需要重启Docker)

如果暂时不想改配置,每次容器重启后执行以下命令也可以恢复访问:

ip link set br-39aac8ad8ef3 up

手动把对应的网桥设置为up状态,systemd-networkd会重新给它分配路由规则。

内容的提问来源于stack exchange,提问作者K1LLUM1N471

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 09:24:10