Docker 容器内无法通过 HTTP 访问外网
现象
- 内/外网 IP 和 域名 可以 ping 通
- 容器内无法访问宿主机所在内网及外网的 Web 服务(404)
- 通过 curl 查看返回头信息感觉是所有 Web 请求被中转到一个固定的 Nginx 服务器
- 所有容器(包括新创建的)均出现以上问题
分析
- 通过
docker run --net host
创建的容器不存在上述的问题 docker run
默认使用bridge
桥接网络,初步判断是bridge
设置问题- 通过 自定义网桥 也未解决问题
- 最终怀疑是宿主机上的桥接网卡
docker0
的问题
解决
通过重建 docker0
网络解决问题
$ sudo service docker stop $ sudo pkill docker $ sudo iptables -t nat -F $ sudo ifconfig docker0 down $ sudo brctl delbr docker0 $ sudo service docker start
其实最终也没有确定问题所在,只是暂时解决了问题。