本文是转载:原文链接https://www.cnblogs.com/shawhe/p/11209678.html
实测可以解决问题
现象
- 内/外网 IP 和 域名 可以 ping 通
- 容器内无法访问宿主机所在内网及外网的 Web 服务(404)
- 通过 curl 查看返回头信息感觉是所有 Web 请求被中转到一个固定的 Nginx 服务器
- 所有容器(包括新创建的)均出现以上问题
[root@test root]$ docker run -it --rm busybox ping www.baidu.com
latest: Pulling from library/busybox
d60bca25ef07: Pull complete
Digest: sha256:49dae530fd5fee674a6b0d3da89a380fc93746095e7eca0f1b70188a95fd5d71
Status: Downloaded newer image for busybox:latest
ping: bad address 'www.baidu.com'
分析
- 通过
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