docker容器ping不通宿主机

问题描述:

Docker网络模式分为四种,一般我们不设置时默认为bridge单桥模式,容器使用独立的network Namespace,并连接到docker0虚拟网卡中。通过docker0网桥以及Iptables nat表配置与宿主机通信。

1.在宿主机上,可以通过iptables -t nat -L -n,查到一条DNAT规则

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  192.168.0.0/24       0.0.0.0/0           
MASQUERADE  tcp  --  192.168.0.3          192.168.0.3          tcp dpt:8080

Chain DOCKER (2 references)
target     prot opt source               destination         
RETURN     all  --  0.0.0.0/0            0.0.0.0/0           
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8000 to:192.168.0.3:8080

2.列出当前主机网桥

brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.5aa0eef737ca	no		veth8b22673
							vethef570d9
docker0		8000.000000000000	no		

3.查看容器网络信息

docker inspect c5217f7bd44c|grep IPAddress

4.重建网桥

1.在使用指令yum install bridge-utils安装工具后,利用brctl show查看网桥
2.利用docker network create [网桥名]指令新建网桥发现其生成的bridge id还是8000.0000000000,在新网桥上创建容器,再次查看并没有什么变化,说明很可能是网桥的问题。
  再次测试,此时网桥ip为172.17.0.1,容器ip为172.0.0.2,发现宿主机能ping通网桥,但是无法连接容器,而容器无法连接网桥,无法连接宿主机,更别谈外网了,所以这里可以肯定是网桥出了问题。
3.添加网桥:brctl addbr br0
4.添加ip字段:ip addr add 172.16.0.1/24 dev br0
5.重启网桥br0:ip link set dev br0 up
6.修改docker默认网桥:vim /etc/docker/daemon.json;在后面添加:

"bridge":"br0"

7.重启docker

systemctl start docker

8.查看网桥:brctl show
9.启动容器后再查看网桥,就会发现网桥变化了。这个时候容器就可以ping通宿主机了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值