1.首先安装bridge-utils网桥管理工具
# yum install bridge-utils
2.在CentOS系统下,创建一个网桥 br0:

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
USERCTL=no
IPADDR=192.168.1.3
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
PREFIX=24
DELAY=0
DNS1=192.168.1.1
3.在CentOS系统下,编辑/etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE=br0
4.在/etc/sysconfig/docker 文件中,添加如下Docker参数:
other_args=\公众-b br0\"大众
5. 重启网络做事
$ sudo service docker restart
6.pipework安装
$ git clone https://github.com/jpetazzo/pipework.git
$ sudo cp pipework/pipework /usr/local/bin/
7.启动两个测试容器
docker run -itd --name test1 --net=none centos /bin/bash
docker run -itd --name test2 --net=none centos /bin/bash
8.设置容器ip
pipework br0 test2 192.168.1.22/24@192.168.1.1
pipework br0 test1 192.168.1.33/24@192.168.1.1
容器con1和con2内部可以看到有一个网卡地址分别如上,并且可以ping通,设置完成。
利用pipework自建桥接管集优点是可以每个容器都有独立ip,对外供应做事,如nginx+php,nginx+resin,都可以利用默认的80端口,并且由于容器暴露端口都可以利用80端口,因此前端路由层nginx配置(proxy_pass)里可以利用dns的办法。缺陷是利用pipework绑定的ip物理机,虚拟机,docker容器的ip都在同一网段,重启后将失落效,这在实际生产环境中是很难实现的,并且不适宜数量多的容器,分配配置麻烦。
本文源自TechWeb.com.cn