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策略均已关闭。

docker之修改docker0网桥默认网段_服务器

如上图所示,通过在服务器上与客户端通信,每次返回的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的网桥信息:

docker之修改docker0网桥默认网段_docker_02

3,线上问题解决

原因定位到为客户端主机网段与docker默认网段冲突造成,修改docker0网桥默认网段解决此次问题:

1)修改文件 /etc/docker/daemon.json 添加内容 "bip": "ip/netmask" [ 切勿与宿主机同网段 ]

docker之修改docker0网桥默认网段_服务器_03

2)重启docker服务:

systemctl daemon-reload
systemctl restart docker

3)查看修改后的docker0网桥信息:

docker之修改docker0网桥默认网段_docker_04

##客户端恢复与服务器通信:

docker之修改docker0网桥默认网段_客户端_05


以上是关于docker之修改docker0网桥默认网段的主要内容,如果未能解决你的问题,请参考以下文章

容器安全之不使用Docker的默认网桥docker0

自定义网段

多个docker节点使用直接路由的方式通信

Docker修改默认Docker0的网段

docker0网卡down影响

docker-compose创建的网段与内网冲突时的解决方法