当我们把docker部署好,是不是想docker能联网呢,能跟其他服务器或者应用进行交互访问呢,那么今天我们来给Docker配置独立的IP及容器之间的互联;
内置bridge(nat)
缺点:
需要配套服务注册/发现,否则宿主上端口分配困难,容易冲突。
由于每个容器暴露的端口都不一致,造成前端路由层nginx配置(proxy_pass)里无法使用dns的方式。
端口映射要在容器启动时就指定好,后期无法变更。
测试发现nat不支持websocket。
自建桥接网络
优点:
每个容器都有独立ip,对外提供服务,如nginx+php,nginx+resin,都可以使用默认的80端口
由于容器暴露端口都可以使用80端口,因此前端路由层nginx配置(proxy_pass)里可以使用dns的方式。
无需为了后期端口映射添加而烦恼
桥接支持websocket
当我们把docker镜像下载下来之后,启动一个容器,登录容器我们会发现容器的ip如下图所示:
停止服务
/etc/init.d/docker stop
关掉docker0
ifconfig docker0 down
删除docker
brctl delbr docker0
增加网桥br0
yum install bridge-utils
CentOS6.5下的配置:
vim /etc/sysconfig/docker
other_args="-b=br0"
如下图:
![1.png 技术分享](https://s1.51cto.com/wyfs02/M02/8D/D1/wKioL1ir4ZqSPeinAABonxTwM8w152.png-wh_500x0-wm_3-wmp_4-s_1353833650.png)
配置bridge桥接网络:
在/etc/sysconfig/network-scripts/下,修改ifcfg-eth0网卡配置,同时增加ifcfg-br0桥接网卡配置如下:
vi ifcfg-eth0内容如下:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=static
BRIDGE=br0
vi ifcfg-br0内容如下:
DEVICE="br0"
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
TYPE=Bridge
![2.png 技术分享](https://s5.51cto.com/wyfs02/M00/8D/D1/wKioL1ir4crBief9AABKa7IghAc630.png-wh_500x0-wm_3-wmp_4-s_1670300059.png)
启动docker服务:/etc/init.d/docker start
查看服务器网卡信息如下:
![3.png 技术分享](https://s4.51cto.com/wyfs02/M02/8D/D4/wKiom1ir4eLRTzZgAACqbTj--DM151.png-wh_500x0-wm_3-wmp_4-s_2122970259.png)
启动一个新的docker客户端,查看客户端ip如下:
进入已经启动过的容器命令:docker attach 容器ID 即可。
![4.png 技术分享](https://s2.51cto.com/wyfs02/M01/8D/D1/wKioL1ir4k2jIRSVAABOfuFOESw012.png-wh_500x0-wm_3-wmp_4-s_4181438633.png)
从外网下载nginx包:
![5.png 技术分享](https://s1.51cto.com/wyfs02/M02/8D/D4/wKiom1ir4lvRlGbMAABNBjrjdI8599.png-wh_500x0-wm_3-wmp_4-s_2933739872.png)
Docker虚拟化技术系列之-网络配置
原文:http://wgkgood.blog.51cto.com/1192594/1899832