docker之修改docker0网桥默认网段
Posted wx5b9c94b17c62a
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker之修改docker0网桥默认网段相关的知识,希望对你有一定的参考价值。
1, 背景:
1)问题描述:
centos7服务器上安装完docker及k8s后,且业务pod全部上线运行,客户通过windows客户端访问我们服务器ip,反馈网络连接不上问题。
2)问题排查:
连接客户端ip为(172.17.0.222),初步排查,客户端无法ping通我方服务器,且经网络工程师排查反馈,双方路由配置没有问题,且没有添加黑名单操作,防火墙,iptables策略均已关闭。
如上图所示,通过在服务器上与客户端通信,每次返回的ip为172.17.0.1也就是docker的虚拟地址,每次出去的路由走的都是docker0网桥,通过后续定位到原因有可能为docker0虚拟机网卡影响造成。
3)问题复现:
关闭docker0网络:客户端连接正常;
开启docker0网络:客户连接异常;
###操作命令:
ifconfig docker0 down //关闭
ifconfig docker0 up //开启
brctl delbr docker0 //删除
2,docker0网络详解
当docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。接下来就要为容器分配IP了,docker会从RFC1918所定义的私有IP网段中,选择一个和宿主机不同的IP地址和子网分配给docker0,连接到docker0的容器就从这个子网中选择一个未占用的IP使用。如一般Docker会使用172.17.0.0/16这个网段(默认网段),并将172.17.0.1/16分配给docker0网桥(在主机上使用ifconfig命令是可以看到docker0的,可以认为它是网桥的管理接口,在宿主机上作为一块虚拟网卡使用);
#默认docker0的网桥信息:
3,线上问题解决
原因定位到为客户端主机网段与docker默认网段冲突造成,修改docker0网桥默认网段解决此次问题:
1)修改文件 /etc/docker/daemon.json 添加内容 "bip": "ip/netmask" [ 切勿与宿主机同网段 ]
2)重启docker服务:
systemctl daemon-reload
systemctl restart docker
3)查看修改后的docker0网桥信息:
##客户端恢复与服务器通信:
以上是关于docker之修改docker0网桥默认网段的主要内容,如果未能解决你的问题,请参考以下文章