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不通外网
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示