Docker 容器不能ping通默认网关(172.17.0.1)--已解决
楼主在全用docker 时发现自带的网桥在生成container后,ping不通,我的另一篇文章中写了在第一次用docker时,如何生新定义一下bridge,然后配置成docker默认的网桥。工作已经正常。现在楼主有新的需求,要自己重新定义一个新的网络,和默认的网桥的网段不一样, 我目前 默认的网段为172.16.0.x,目前想单独创建一个网段给集群用,为172.15.0.x/24.网段创建成功:
(如果想直接解决问题,直接拖到最后,
如果想熟悉一下定位思路前边的也可以顺带看一下)
楼主在全用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 通)
那我就在想,我之前用的
brctl create 的新的bridge ,配置给docker成为默认的网络,都可以正常工作,为什么现在创建新的网络又不行了呢。
再用docker network inspect 查看一下能工作和不能工作的network 对比发现有以下区别:
目前猜测是不是我要创建新网络的时候没有给网关, 加上试一下呢:
现在看一下网关是有了。现在用mynet1 创建一个容器看一下能ping能不呢:
还是不行,晕了。
再对比看下,发现option里好像有好多没有配置:
看了一下不同的地方,左边的意思是说这个网络用的网桥是br0, 也是就我们创建的那个。
那右边没有网桥信息,怀疑是网桥没有和网络关联起来。
现查看帮助信息,发现有一个-d 选项,配置了后就由driver管理网络,试一下呢:
重新创建mynet2试下;
=> 步骤不写了,option还是空,还是ping不通。
哪里去改这个options呢? 好像没有,
只有请教高人了。
TODO:
找了2天,找到了这个文章:
(困扰我几天的问题,希望这次能解决,其实我也想用virtual box 用新的centOS安装试一下,也达到了升级centOS的方法,不过这里我还是希望把这个问题解决掉)。
(这两天也问了一个大佧,不过这个人没有回复,也许也太忙,也许是清高,不管怎样人还是要靠自己,没有什么问题是解决不了的,只是时间问题)
https://blog.csdn.net/weixin_42288415/article/details/105366176
现象和我一样,他是通过升级centOS 内核解决的。
引用文章内容:
那如何升级centOS内核呢,相信网上有很多:
https://www.cnblogs.com/xzkzzz/p/9627658.html 这里找了一篇,步骤还是有点多。
待我有空验证一下这个方法:
(就目前 来看,我的一台ubuntu 机器上uname -r 是用的4.18 的内核,docker映射出的tomcat从window电脑上也可以访问)
TODO(升级我的centOS 到4.18 内核试下):
查看了我的centOS, 果然是3.10的,有希望了:
升级内核试下
根据上边的我那个升级内核的link, 现在可以看到最新的kernel 已经是5.7了,我的那个太TM 老了。
现在升级后可以看到,已经是5.7的kernel了。
那现在来试下docker 默认的网桥创建的container是不是能工作了呢。
从网页访问也可以了:
研究了几天终于找到了根本原因,希望能帮助到遇到同样问题的朋友。如果对你有用请留下你宝贵的脚印,好让我知道 我确认帮助过人。哈哈。
平常在工作中也是经常会处理各种自动化环境问题,解决问题后那种feel那是倍爽啊。
转发请注明出处,谢谢。
更多推荐
所有评论(0)