其他分享
首页 > 其他分享> > docker容器访问不了宿主机和外部内网服务器

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地址为容器的默认网关。

 

问题:

 

解决方法:  (没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

 

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

 

标签:容器,docker0,宿主机,veth,网桥,服务器,docker
来源: https://www.cnblogs.com/namedgx/p/16277227.html