Docker 容器内无法通过 HTTP 访问外网

本文是转载:原文链接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

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值