DOCKER默认虚拟网卡IP地址与局域网冲突解决

一、背景
docker启动时默认会创建一个docker0网桥,它在内核层连通了其他的物理或虚拟网卡,相当于将所有容器和其主机都放到同一个网络。但是部署在内网中的IP段存在有此网段的IP时,会导致冲突,
1:使用宿主机的ip也会有是无效的。
2:只要docker启动,便会造成局域网内其它主机访问本机失效,
3:关闭docker后,本机便可访问.

解决方案如下:

第一步 删除原有配置

sudo service docker stop 
sudo ip link set dev docker0 down      #关闭网卡 
sudo brctl delbr docker0            #删除docker0网卡 
sudo iptables -t nat -F POSTROUTING


> 如果未安装bridge-utils,brctl delbr docker0会报如下错误,
> -bash: brctl: command not found
> centos7 bridge-utils安装:
> yum install bridge-utils

第二步 创建新的网桥

sudo brctl addbr docker0 #新增网卡 
sudo ip addr add 192.168.200.1/24 dev docker0 
sudo ip link set dev docker0 up


第三步 配置Docker的文件
注意: 这里是 增加下面的配置(注:设置为与内网不相的ip即可)

vi /etc/docker/daemon.json 

{ "bip": "172.16.17.1/24" }

第四步 因为是系统网络设置,要生效需要重启主机

sudo reboot

附docker network 命令简介
  connect     联接一个容器到网络
  create      新建一个虚拟网络
  disconnect  断开网络到容器的联接
  inspect     查看网络详情
  ls          网络列表
  prune       删除所有无用网络
  rm          删除网桥

上一篇:解决docker服务默认网卡和宿主机网卡内网段冲突


下一篇:解析 | K8S之网络插件exec