DOCKER默认虚拟网卡IP地址与局域网冲突解决
一、背景docker启动时默认会创建一个docker0网桥,它在内核层连通了其他的物理或虚拟网卡,相当于将所有容器和其主机都放到同一个网络。但是部署在内网中的IP段存在有此网段的IP时,会导致冲突,1:使用宿主机的ip也会有是无效的。2:只要docker启动,便会造成局域网内其它主机访问本机失效,3:关闭docker后,本机便可访问.解决方案如下:第一步 删除原有配置sudo service do
一、背景
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 <bridge> 创建网桥
delbr <bridge> 删除网桥
addif <bridge> <device> 将网卡接口接入网桥
delif <bridge> <device> 删除网桥接入的网卡接口
hairpin <bridge> <port> {on|off} 开闭交换机端口的VEPA模式
setageing <bridge> <time> 设置mac的老化时间,超时没有数据,就删除mac
setbridgeprio <bridge> <prio> 设置网桥权限
setfd <bridge> <time> 设置网桥延迟
setportprio <bridge> <port> <prio> 设置网桥端口权限
show [ <bridge> ] 查询网桥信息
showmacs <bridge> 查询网桥mac信息
showstp <bridge> 查看网桥 STP 信息
stp <bridge> {on|off} 启用禁用 STP
更多推荐
所有评论(0)