案例:
安装好docker后,docker0地址:172.20.0.1/24
创建两个容器a,b后,ip分别为:172.20.0.2,172.20.0.3
宿主机无法ping通2个容器的ip地址,进入容器后也无法ping通docker0地址, 但容器间能互相ping通(在a内能ping通b,b内能ping通a),且无法ping通外网地址(但默认docker容器内是可以ping通外网的)
处理:
几乎试遍了网上能找到的方法,包括修改虚拟网卡的网段、重新bridge网卡、宿主机中设置IPv4转发等等。
最后,在网上找到这个:
https://www.codenong.com/cs105366176/
各种原因都分析了,甚至classiclink问题也考虑了,最后通过阿里云工程师帮忙日志分析,才发现是docker 加载内核的bridge.ko 驱动异常,导致docker0 网卡无法转发数据包,也就是系统内核的网桥模块bridge.ko 加载失败导致的,一般情况下这种场景的确很少见。
解决办法:
升级centos内核。
列出可用内核:
sudo yum list kernel
升级内核:
sudo yum update kernel -y
重启:
sudo reboot