1.linking系统

docker有一个linking系统可以连接多个容器。它会创建一对父子关系,父容器可以看到所选择的自容器的信息。该系统会在源和接受容器之间建立一个隧道。接受容器(父容器)可以看到源容器指定的信息。

linking系统的好处:子容器可以不用暴露到局域网中,子容器只能被父容器访问。

创建步骤:

1)先创建子容器,自定义容器的名称

wKiom1iz2Lfz5s3kAAAQ3VENUy4994.png


2)再创建父容器

wKioL1iz2LfieoPLAAATOR4IjJU886.png

--link标记的格式:--link name:aliasname是子容器的名称,alias是这个子容器的别名。


3)测试

容器互联_第1张图片

执行命令:docker  ps  --no-trunc

可以看到父容器和子容器的关系


容器互联_第2张图片

进入到父容器中,查看/etc/hosts文件,可以发现自动添加了子容器的解析记录。


wKioL1iz2LzA54n7AAATekvmIPA060.png

ping子容器的名称,发现可以ping通。

注意:可以链接多个子容器到父容器

  在bridge模式下,连在同一网桥上的容器可以相互通信,若出于安全考虑,可以也可以禁止他们之间的通信,方法是在DOCKER_OPTS变量中设置--icc=false,这样只有使用--link才能使两个容器通信。


2.不同容器之间通信借助pipework这个工具

使用pipework工具给容器分配局域网IP地址,直接将容器暴露到物理网络上。网桥的种类有两种,实现的功能也不同。

1)Bridge模式

这种模式需要定义网桥,然后以-b方式指定网桥,容器只能同属于一个VLAN

创建步骤:

1)安装pipework工具

wKiom1iz2L3DnT7_AAAGZzKOdfY915.png

解压工具包


wKioL1iz2L2hQKgCAAAHevMwCZg915.png

pipework工具的主程序拷贝到系统命令路径即可


2)定义并指定网桥

wKiom1iz2L6xlSRGAAAJjPgpDOk196.png

需要的依赖包


wKiom1iz2L_DguShAAALc8OgviM743.png

容器互联_第3张图片

修改物理网卡


wKioL1iz2kCDKgRXAAAHYDyd2So272.png

容器互联_第4张图片

创建虚拟网卡,桥接到物理网卡,同时设置IP地址。


wKiom1iz2kXBQ86BAAAHP7aT9pM791.png

容器互联_第5张图片

wKioL1iz2kqSCYwAAAAPunfktAM301.png

重启network服务后,可以看到网桥配置成功。


wKioL1iz2kjB6BqLAAAGKHT-g9U025.png

停止docker服务


wKiom1iz2kmTODdrAAAG64XBCBM897.png

wKioL1iz2kmAgakJAAAHwK6T3ZY118.png

使用-b指定网桥


wKiom1iz2kmDSAqEAAAF84CGzRM477.png

启动docker服务


3)使用镜像运行一个容器

wKiom1iz2k7i7lCMAAARIc1b7aM840.png

创建容器最好结合--net=none选项,防止自动分配IP地址在局域网中产生冲突。


4)使用pipework工具分配IP地址

wKiom1iz2xiAxlUIAAAJ0V2V3jI988.png

执行pipework命令,定义容器网卡的IP地址,不加-i  eth0选项时默认指定的网卡为eth1

注意:@后面跟的是容器的网关,是物理网络中的网关。


5)测试

容器互联_第6张图片

使用局域网中的主机ping刚创建的容器的IP地址,发现可以通信。


2)使用openvswitch网桥实现容器的VLAN划分

创建步骤:

1)安装openvswitch及依赖包

wKiom1iz2xqgPatjAAAQuEgyQ4o675.png

安装依赖包


这里将openvswitch的源码包生成了rpm包,并进行了安装。

wKioL1iz2xuRdLJyAAAI7hdfvWk115.png

wKioL1iz2xuyhh_jAAAIXJaCNCQ570.png

wKiom1iz2xzwvP56AAALFhiKr8U680.png

wKiom1iz2x3j8EqOAAAQEJ8DVcA446.png

wKioL1iz2yKg-acCAAAOKa_pi7A140.png

wKioL1iz2yPxHpgPAAASN7gof4E275.png

会在rpmbuild/RPMS/x86_64/目录下生成rpm包,安装第一个即可。


wKiom1iz2ySTJTLcAAAOGT692Ww787.png

wKioL1iz3AiQzIC_AAAGxok0HLc317.png

启动服务


2)创建网桥ovs1,把物理网卡加到ovs1

容器互联_第7张图片


容器互联_第8张图片

容器互联_第9张图片

查看ovs1和物理物理网卡的状态


同样需要安装pipework工具。


3)测试

容器互联_第10张图片

wKioL1iz3CbTCK-yAAAQhwR-VMI767.png

这里创建了五个测试容器


wKiom1iz3Bag54CeAAAN_zacLZY067.png

wKioL1iz3B6gwZ7SAAAJkhu-hno819.png

五个容器的IP地址属于同一个网段,前四个属于vlan100,第五个属于vlan200

注意:@后面跟的就是vlan的序号。


容器互联_第11张图片

进入容器test1,发现与test2可以通信,与test5无法通信。