docker夸主机访问,实现自定义网桥
要实现docker的夸主机访问,我们需要实现自定义网桥
1、ubuntu下安装网桥管理工具:
sudo apt-get install bridge-utils
默认情况下,docker启动的时候会创建并配置一个网络接口在linux的内核中;如果你已经启动并运行了docker,默认情况下会创建并配置好docker0的网桥。
参见地址:https://docs.docker.com/engine/userguide/networking/default_network/custom-docker0/(Customize the docker0 bridge)
参见地址:https://docs.docker.com/engine/userguide/networking/default_network/build-bridges/(Build your own bridge)
查看当前的网桥以及接入网桥的网卡:
sudo brctl show
2、创建自己的网桥,并指定docker使用新的网桥
首先,停止docker服务,并移除docker0网桥:
# 停止docker服务,并移除docker0网桥 sudo service docker stop sudo ip link set dev docker0 down sudo brctl delbr docker0 sudo iptables -t nat -F POSTROUTING
然后,创建自己的网桥:
#创建自己的网桥 sudo brctl addbr bridge0 sudo ip addr add 192.168.5.1/24 dev bridge0 sudo ip link set dev bridge0 up # 确认你创键的网桥是否正常运行 ip addr show bridge0 #如下即正常运行 4: bridge0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state UP group default link/ether 66:38:d0:0d:76:18 brd ff:ff:ff:ff:ff:ff inet 192.168.5.1/24 scope global bridge0 valid_lft forever preferred_lft forever #设置docker默认使用新的网桥 echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
或者使用,来定义网段:
DOCKER_OPTS="-b=br0 --fixed-cidr='192.168.8.128/26'" #为docker指定了网段
echo $DOCKER_OPTS >> /etc/default/docker
#启动docker服务
sudo service docker start
#检查docker运行参数是否有-b=br0
ps -ef |grep docker
此处可参考:http://wiki.jikexueyuan.com/project/docker-technology-and-combat/bridge.html
注意:通过brctl创建的网桥在重启系统后将无效,如果需要永久生效,需要编辑/ett/network/interfaces文件,加入如下:
auto bridge0
iface bridge0 inet static
address 192.168.8.157
netmask 255.255.255.0
getway 192.168.8.1
bridge_ports eth0
使用ifconfig查看,如果现实bridge0网桥,并且没有显示docker0网桥,说明docker已经默认使用了bridge0网桥
可以使用brctl show查看系统中的网桥
如果此时启动一个docker容器,同时使用brctl show 查看,可以看到新启动的容器默认使用的是bridge0网桥
附加:
注意:通过brctl addbr bridge0添加的网桥重启后将会失效,想下次启动的时候任然保持配置需要编辑:
/etc/network/interfaces 文件,添加:
auto br0 iface br0 inet static address 192.168.8.130 netmask 255.255.255.0 geteway 192.168.8.1 bridge_ports enp0s3 #为新建的网桥链接本地的物理网卡
注意:笔者配置完成后再启动docker服务的时候,发现docker0网桥还在,同时启动容器后,容器默认使用的还是docker0网桥,这块其实笔者配置并没有通过,也不是道是什么原因,还在查