阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

关于docker中容器可以Ping通外网,真机无法Ping通容器的问题整理

68次阅读
没有评论

共计 821 个字符,预计需要花费 3 分钟才能阅读完成。

导读 首先我们要知道整体的框架结构,docker 是我们安装在 centos7 上的,而 centos7 是安装在 vmware 上。其中 docker 中还有若干容器运行。

整体框架图如下:
关于 docker 中容器可以 Ping 通外网,真机无法 Ping 通容器的问题整理
我们将它分为两部分,一部分是 docker 环境,除去 docker 的所有划分到另一个部分。(我们知道 centos7 和我们的真机是同一个网段的 ip,不需要配置之间可以相互通信)。那 dokcer 本身又是一个大整体,其下面还有很多我们生成的容器,他们的 ip 是由 docker 的虚拟网卡生成的,他们是一个网段的。彼此之间应该是可以相互 ping 通的。

例如我的 docker 中 ubuntu 的 ip 为 172.17.0.2,而真机和 centos7 是 192.168 网段的。
关于 docker 中容器可以 Ping 通外网,真机无法 Ping 通容器的问题整理
关于 docker 中容器可以 Ping 通外网,真机无法 Ping 通容器的问题整理
关于 docker 中容器可以 Ping 通外网,真机无法 Ping 通容器的问题整理
之前我们尝试过,发现 docker 的 ubuntu 竟然也可以 ping 通外网,按道理它不是应该不通向外网的吗?后来知道,在 docker 环境中,不同的容器就像相当于不同的主机,而 docer 本身将它们互通,起到了交换机的作用,同时,docker 本身也有着路由功能,自带 dhcp 和 nat 服务。我们都知道(你知道吗)NAT 服务是将一个网段的 ip 转换为另一个网段的 ip 来进行通信。

按照最上面的框架图来说,docker 中的 ubuntu(172.16.111.1) 想要去连接外网,docker 发现它和外网的 ip 网段不同,自动转换为 172.16.3.222。这时候,和我们外面的真机环境网段匹配了,就可以正常通信了。而当我们真机环境的主机去寻找 ubuntu 容器时,发现找不到 172.16.111.1,就会出现请求超时或者目标不可达的现象。

问题找到了,那么解决办法也很简单,既然主机找不到,那我们就添加一条静态即可,当我们真机去 ping172.16.111.1 时,人为的将它转换为 192.16.3.222,这时候自然也能 ping 通了。
关于 docker 中容器可以 Ping 通外网,真机无法 Ping 通容器的问题整理

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计821字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中