Docker 容器不能ping通默认网关(172.17.0.1)--已解决

(如果想直接解决问题,直接拖到最后,

如果想熟悉一下定位思路前边的也可以顺带看一下)

楼主在全用docker 时发现自带的网桥在生成container后,ping不通,我的另一篇文章中写了在第一次用docker时,如何生新定义一下bridge,然后配置成docker默认的网桥。工作已经正常。

 

现在楼主有新的需求,要自己重新定义一个新的网络,和默认的网桥的网段不一样, 我目前 默认的网段为172.16.0.x, 

目前想单独创建一个网段给集群用,为172.15.0.x/24.

网段创建成功: docker network create --subnet=172.15.0.0/24 mynet1

创建tomcat容器时也用的这个网络:docker run -d --name tomcatMynet1 --network mynet1 -p 8994:8080 tomcat

但是在进入容器后不能ping通172.15.0.1(但是两个tomcat容器之间可以ping 通)

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第1张图片

那我就在想,我之前用的

brctl create 的新的bridge ,配置给docker成为默认的网络,都可以正常工作,为什么现在创建新的网络又不行了呢。

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第2张图片

再用docker network inspect 查看一下能工作和不能工作的network 对比发现有以下区别:

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第3张图片

目前猜测是不是我要创建新网络的时候没有给网关, 加上试一下呢:

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第4张图片

现在看一下网关是有了。现在用mynet1 创建一个容器看一下能ping能不呢:

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第5张图片

还是不行,晕了。

再对比看下,发现option里好像有好多没有配置:

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第6张图片

看了一下不同的地方,左边的意思是说这个网络用的网桥是br0, 也是就我们创建的那个。

那右边没有网桥信息,怀疑是网桥没有和网络关联起来。

现查看帮助信息,发现有一个-d 选项,配置了后就由driver管理网络,试一下呢:

重新创建mynet2试下;

=> 步骤不写了,option还是空,还是ping不通。

哪里去改这个options呢? 好像没有,

只有请教高人了。

TODO:

找了2天,找到了这个文章:

(困扰我几天的问题,希望这次能解决,其实我也想用virtual box 用新的centOS安装试一下,也达到了升级centOS的方法,不过这里我还是希望把这个问题解决掉)。

(这两天也问了一个大佧,不过这个人没有回复,也许也太忙,也许是清高,不管怎样人还是要靠自己,没有什么问题是解决不了的,只是时间问题)

https://blog.csdn.net/weixin_42288415/article/details/105366176

现象和我一样,他是通过升级centOS 内核解决的。

引用文章内容:

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第7张图片

那如何升级centOS内核呢,相信网上有很多:

https://www.cnblogs.com/xzkzzz/p/9627658.html  这里找了一篇,步骤还是有点多。

待我有空验证一下这个方法:

(就目前 来看,我的一台ubuntu 机器上uname -r 是用的4.18 的内核,docker映射出的tomcat从window电脑上也可以访问)

TODO(升级我的centOS 到4.18 内核试下): 

查看了我的centOS, 果然是3.10的,有希望了:

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第8张图片

升级内核试下
根据上边的我那个升级内核的link, 现在可以看到最新的kernel 已经是5.7了,我的那个太TM 老了。

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第9张图片

现在升级后可以看到,已经是5.7的kernel了。

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第10张图片

那现在来试下docker 默认的网桥创建的container是不是能工作了呢。

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第11张图片

从网页访问也可以了:

Docker 容器不能ping通默认网关(172.17.0.1)--已解决_第12张图片

研究了几天终于找到了根本原因,希望能帮助到遇到同样问题的朋友。如果对你有用请留下你宝贵的脚印,好让我知道 我确认帮助过人。哈哈。

平常在工作中也是经常会处理各种自动化环境问题,解决问题后那种feel那是倍爽啊。

转发请注明出处,谢谢。

你可能感兴趣的:(java)