遇到的错误:
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 网络已正常创建。