一、背景
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 删除网桥