docker容器访问不了宿主机和外部内网服务器

 

 首先需要明确docker的网桥模式,网桥工作在二层(OSI堆栈),是通用网络设备的一种,可以设置IP地址。有了IP地址,Linux便可通过路由表或IP表,在网络层定位网桥,这就相当于有了一个虚拟网卡,即docker0。docker0默认的地址划分:IP(127.17.42.1/16),在启动容器时,docker会在宿主机上创建一对虚拟网卡veth pair设备。veth设备总是成对出现的,它们组成了一个数据的通道,数据从一个设备进入,就会从另一个设备出来。因此,veth设备常用来连接两个网络设备,容器启动时,Docker引擎将veth pair设备的一端放在新创建的容器中,并命名为eth0。另一端放在宿主机中,以veth***这样类似的名字命名,并将这个网络设备加入到docker0网桥中,可以通过brctl show命令查看,从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。

 

问题:

优先尝试 如不行 再执行下面的: iptables -F  &&   systemctl restart docker    (如果iptables内容重要 优先备份或不清理)

解决方法:  (没brctl命令 自行安装 yum -y install bridge-utils  

1.删除原有配置

1.systemctl  stop docker
2.ip link set dev docker0 down
3.brctl delbr docker0
3.iptables -t nat -F POSTROUTING

2.创建新网桥 

1.brctl addbr docker0
2.ip addr add 172.17.10.1/24 dev docker0
3.ip link set dev docker0 up

3.修改docker配置,在/etc/docker/daemon.json中追加bip如下. 注意json的格式,bip前面需要有 ","

 

4.重启docker

systemctl restart docker

 

5. 修改了DNS后 需要重启docker服了 重新生成iptables  不然容器里也访问不了宿主机

 参考:docker容器ping不通宿主机与外网问题排查及解决_Xiao阿的博客-CSDN博客_docker容器ping不通外网

 

posted @ 2022-05-16 15:50  mrdongdong  阅读(4713)  评论(0编辑  收藏  举报