栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

解决因docker bridge网桥引起的虚拟机网络故障

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解决因docker bridge网桥引起的虚拟机网络故障

        几天前出现了一个奇怪的事情,当执行了docker-compose up -d命令后,xshell与主机失去了链接。然后主机神奇的从网络中消失了。一开始以为是公司的网络故障,就没管它,过了一天,业务部门的人找到我说他们的网站无法访问了,于是乎打开虚机控制中心查看主机运行情况,发现主机运行正常。在主机上查看网站也工作正常。第一反应是网络问题,给管信部打电话描述了一下情况,请他们帮忙查找网络上是否有安全设置对此主机的IP作了限制,经他们排查没有此类限制。问题陷入了僵局。

        过了个年回来,自己写代码要用到这台主机的数据库,发现连接不上,就又把这个问题拿出来思考。既然是执行docker的命令出现的问题,那我是不是把docker卸载了就可以了呢,说干就干,一顿操作 yum remove docker* 、 shutdown -r 果然xshell恢复了与主机的连接,可以连上了。能连上了就得恢复docker啊,因为这个主机里还用容器运行了一组服务呢,尤其是业务部门的那些网站。又一路安装 yum install docker-ce、systemctl start docker.service 刚执行完这个命令结果xshell又与主机失去了连接。原因很明显了,问题就出在主机内。

        既然问题出在内部,那么解决问题的思路就是把物理网卡外的其它所有虚拟网络全给它干掉,理论上就可以恢复正常。接下来从虚机控制中心的管理控制台进入到主机,使用 ifconfig命令查看主机当前的网络配置,发现除了eth外还有一个docker0,外加好几个以br-开头的网络,这是什么???经科普才知道,docker在进行网络设置时会创建一种叫作网桥的虚拟网络设备。它的地址在不指定的情况下会自动分配,就是这个自动分配的网桥地址与我使用的网络冲突了,导致了我无法与主机进行通信。首先:修改docker的配置文件将网桥默认地址改到我们的网络中不存在的地址段去。执行命令 vim /etc/docker/daemon.json,然后在配置文件中增加ip绑定操作。

注意这个bip就是绑定ip的设置项。添加完后,退出编辑器,执行 systemctl restart docker 命令重启docker服务。服务重启了,但之前的那个冲突的网桥是不会自己消除的,所以还要执行如下命令将冲突的网桥手动删除,首先是关闭设备 ip link set dev 网桥名称 down ,然后是 brctl delbr 网桥名称 来删除设备。

        经过以上的操作主机通信恢复正常。这时要启动容器了,新的问题又出现了,执行docker-compose up -d后容器不能正常启动,提示不能在网络 xxxx_default中创建endpoint,使用docker network ls命令查看docker的网络情况,发现提示的那个网络的状态是no, kill了它重建一个不就行了吗,这么想着就执行了 docker network rm 网络ID把这个网络给删除了,不删不要紧,这一删除问题更严重了,启动容器时提示无法找到网络。好吧,放大招儿,把这些容器全部删除掉重建。先使用docker ps -a 命令查看一下容器列表,然后执行docker rm 容器ID把有问题的容器全部给删除了。最后再次执行docker-compose up -d创建网络和容器成功。一切恢复正常。

        看着这些操作没有几步,但这个问题从表相到实质的分析过程真的很复杂,尤其是这个容器化的网络桥接技术,还真得好好的学习一下容器化的原理。其实最开始的时候我一直把注意力集中在exsi上,我一直以为是它的虚拟交换机出了问题造成的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731000.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号