docker 重启报错:failed to start daemon: Error initializing network controller: error creating default...

遇到的错误:

failed to start daemon: Error initializing network controller: error creating default "bridge" network: cannot create network
  • 说明 Docker 在启动时尝试创建默认的 bridge 网络失败了,可能是由于残留的网络配置或 IP 地址段冲突。

解决步骤(重新创建默认 bridge 网络):
✅ 第一步:停止 Docker 服务

sudo systemctl stop docker

✅ 第二步:删除 Docker 网络配置目录
Docker 网络数据保存在 /var/lib/docker/network 中,可以清除后让它重新初始化:

sudo rm -rf /var/lib/docker/network

如果你设置了 data-root 目录,比如你之前设置的是 /home/xnzf/docker_data,请删除该目录下的 network 子目录:

sudo rm -rf /home/xnzf/docker_data/network

✅ 第三步:检查并清理残留的网络接口
查看是否存在名为 docker0 的接口:

ip link show docker0

如果存在,先删除它:

sudo ip link delete docker0

你也可以清理旧的 br-xxx 接口:

ip link show | grep br-
# 假设有 br-xxxx,删除:
sudo ip link delete br-xxxx

✅ 第四步:检查 Docker 默认地址池设置
如果你在 /etc/docker/daemon.json 中设置了 default-address-pools,请确保配置合理,且不与已有网络冲突。示例:

{
  "data-root": "/home/xnzf/docker_data",
  "registry-mirrors": [
    "https://docker-0.unsee.tech",
    "https://docker-cf.registry.cyou",
    "https://docker.1panel.live"
  ],
  "default-address-pools": [
    {
      "base": "172.30.0.0/16",
      "size": 24
    }
  ]
}

如果 base 设置和你现有的网络冲突(比如公司局域网在 172.30.x.x),可以换一个:

"base": "172.80.0.0/16"

✅ 第五步:重启 Docker

sudo systemctl daemon-reexec
sudo systemctl start docker

🧪 验证

docker network ls

应该可以看到 bridge 网络已正常创建。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容