Docker容器仅重启docker.service后才有网络的问题求助
解决方案
1. 解决NetworkManager与Docker的网络冲突
Ubuntu 22.04默认通过NetworkManager管理网络,新网卡更换后可能干扰Docker的网桥规则:
- 创建配置文件
/etc/NetworkManager/conf.d/docker.conf,写入:[main] plugins=ifupdown,keyfile [ifupdown] managed=false [device] match-device=interface-name:docker0 managed=false - 重启服务生效:
sudo systemctl restart NetworkManager sudo systemctl restart docker
2. 重置Docker网络栈
网卡更换可能导致Docker网络配置残留异常,执行以下命令重置:
sudo systemctl stop docker sudo ip link set dev docker0 down sudo brctl delbr docker0 sudo iptables -t nat -F POSTROUTING sudo systemctl start docker
(若缺少brctl,先安装:sudo apt install bridge-utils)
3. 强制Docker使用固定网络配置
修改/etc/docker/daemon.json(无则新建),指定网桥IP、DNS和地址池,避免动态分配冲突:
{ "bip": "172.17.0.1/16", "dns": ["8.8.8.8", "1.1.1.1"], "default-address-pools": [ {"base": "172.18.0.0/16", "size": 24}, {"base": "172.19.0.0/16", "size": 24} ], "mtu": 1500 }
(mtu值需与主机网卡MTU一致,可通过ip link show查看)
- 重启Docker生效:
sudo systemctl daemon-reload sudo systemctl restart docker
4. 重建Docker iptables规则
网卡变更可能重置iptables,导致Docker链丢失:
sudo systemctl stop docker sudo iptables -F sudo iptables -t nat -F sudo iptables -X sudo iptables -t nat -X sudo systemctl start docker
5. 禁用IPv6排除解析干扰
修改docker-compose.yml的环境变量,强制禁用IPv6:
version: '3.8' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped environment: DISABLE_IPV6: 'true' ports: - '80:80' - '443:443' - '81:81' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
验证步骤
每次修改后按以下流程测试:
sudo systemctl restart docker- 等待10秒模拟延迟
docker compose up -ddocker compose logs app检查是否无DNS错误curl 127.0.0.1:81验证服务可访问
内容的提问来源于stack exchange,提问作者Meffe
相关产品推荐
相关产品推荐

