解决启动docker报错Cannot connect to the Docker daemon问题

解决启动docker报错Cannot connect to the Docker daemon问题

说明:

1.离线安装docker后安装docker

bash 复制代码
启动报错Cannot connect to the Docker daemon,或者执行sudo dockerd报错
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to register "bridge" driver: failed to create NAT chain DOCKER: iptables not found

2.解决办法:

原因:Docker 网络初始化时因缺少 iptables 工具导致的

1. 安装 iptables(如未安装)
csharp 复制代码
sudo apt-get update
sudo apt-get install -y iptables
2. 切换为 legacy 模式(关键步骤)
csharp 复制代码
# 设置 iptables-legacy
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

# 验证选择
sudo update-alternatives --config iptables
3. 重启 Docker 服务
csharp 复制代码
# 强制停止残留进程
sudo pkill -9 dockerd

# 清理旧套接字
sudo rm -f /var/run/docker.sock

# 启动 Docker(调试模式观察输出)
sudo dockerd
4. 持久化配置(防止重启失效)
csharp 复制代码
# 创建配置文件
sudo tee /etc/docker/daemon.json <<EOF
{
  "iptables": true,
  "userland-proxy": false
}
EOF
5.验证成功
csharp 复制代码
# 检查 NAT 规则
sudo iptables -t nat -L DOCKER

# 测试容器网络
sudo docker run --rm alpine ping -c 3 baidu.com

如果还是报错,那么就重装docker