指定IP的Docker容器无法访问互联网的问题求助
检查自定义网桥的NAT规则
Docker默认网桥会自动配置NAT实现外网访问,但自定义网桥可能缺失相关规则。执行以下命令查看NAT表:sudo iptables -t nat -L POSTROUTING
如果没有针对193.111.77.0/24网段的SNAT规则,手动添加:sudo iptables -t nat -A POSTROUTING -s 193.111.77.0/24 -j MASQUERADE修正容器DNS配置
容器无法解析域名会导致看似无法访问外网。进入容器查看DNS配置:cat /etc/resolv.conf
若DNS服务器无效,创建网络时直接指定公共DNS:docker network create --driver=bridge --subnet=193.111.77.0/24 --gateway=193.111.77.1 --dns=8.8.8.8 --dns=114.114.114.114 br0
或启动容器时单独指定:docker run --net br0 --ip 193.111.77.183 --dns=8.8.8.8 -it ubuntu bash验证网关连通性
进入容器后先测试与网关的连通性:ping 193.111.77.1
若无法连通,检查宿主机网卡配置,确保自定义网桥br0的网关设置正确,且宿主机本身能正常访问外网。更换私有网段
你使用的193.111.77.0/24属于公网网段,可能与宿主机路由冲突。建议改用私有网段(如172.16.0.0/12、192.168.0.0/16、10.0.0.0/8):docker network create --driver=bridge --subnet=192.168.77.0/24 --gateway=192.168.77.1 br0
再重新启动容器分配IP:docker run --net br0 --ip 192.168.77.183 -it ubuntu bash
内容的提问来源于stack exchange,提问作者bioflugel

