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": "192.168.200.1/24" }

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

sudo reboot

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

Linux brctl 命令简介

1.添加网桥(br0)
brctl addbr br0
注:设置br0可用
sudo ifconfig br0 192.168.100.1 netmask  255.255.255.0

2.查看网桥
1)显示所有的网桥信息
udo brctl show
2)显示某个网桥(br0)的信息
$ sudo brctl show br0

3.删除网桥(br0)
sudo brctl delbr br0

4. 将eth0端口加入网桥br0
brctl addif br0 eth0

5. 从网桥br0中删除eth0端口
brctl delif br0 eth0

Usage: brctl [commands]
commands:
        addbr                           创建网桥
        delbr                           删除网桥
        addif                   将网卡接口接入网桥
        delif                   删除网桥接入的网卡接口
        hairpin           {on|off}        开闭交换机端口的VEPA模式
        setageing        

 

你可能感兴趣的:(docker,docker,局域网)