(如果想直接解决问题,直接拖到最后,
如果想熟悉一下定位思路前边的也可以顺带看一下)
楼主在全用 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 通)
|
|
出现这个问题是因为 tomcat 是精简版的,如何解决了执行下面两个命令
|
|
太慢了,浪费生命,更新清华源,试试
|
|
那我就在想,我之前用的
可以 ping 通,新版的内核支持 ping 通。
brctl create 的新的 bridge ,配置给 docker 成为默认的网络,都可以正常工作,为什么现在创建新的网络又不行了呢。
再用 docker network inspect 查看一下能工作和不能工作的 network 对比发现有以下区别:
目前猜测是不是我要创建新网络的时候没有给网关, 加上试一下呢:
现在看一下网关是有了。现在用 mynet1 创建一个容器看一下能 ping 能不呢:
~~还是不行,晕了。~~因为我的内核版本是 5.11 已经没有这个问题了。依然可以
再对比看下,发现 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 那是倍爽啊。
版权声明:本文为 CSDN 博主「coolfishbone_joey」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/coolfishbone_joey/article/details/107146839