1.linking系统 docker有一个linking系统可以连接多个容器。它会创建一对父子关系,父容器可以看到所选择的自容器的信息。该系统会在源和接受容器之间建立一个隧道。接受容器(父容器)可以看到源容器指定的信息。 linking系统的好处:子容器可以不用暴露到局域网中,子容器只能被父容器访问。 创建步骤: 1)先创建子容器,自定义容器的名称
2)再创建父容器
--link标记的格式:--link name:alias,name是子容器的名称,alias是这个子容器的别名。
3)测试
执行命令:docker ps --no-trunc
可以看到父容器和子容器的关系
进入到父容器中,查看/etc/hosts文件,可以发现自动添加了子容器的解析记录。
ping子容器的名称,发现可以ping通。
注意:可以链接多个子容器到父容器
在bridge模式下,连在同一网桥上的容器可以相互通信,若出于安全考虑,可以也可以禁止他们之间的通信,方法是在DOCKER_OPTS变量中设置--icc=false,这样只有使用”--link”才能使两个容器通信。
2.不同容器之间通信借助pipework这个工具
使用pipework工具给容器分配局域网IP地址,直接将容器暴露到物理网络上。网桥的种类有两种,实现的功能也不同。 1)Bridge模式
这种模式需要定义网桥,然后以”-b”方式指定网桥,容器只能同属于一个VLAN。 创建步骤:
(1)安装pipework工具
解压工具包
将pipework工具的主程序拷贝到系统命令路径即可
(2)定义并指定网桥
需要的依赖包
修改物理网卡
创建虚拟网卡,桥接到物理网卡,同时设置IP地址。
重启network服务后,可以看到网桥配置成功。
停止docker服务
使用-b指定网桥
启动docker服务
(3)使用镜像运行一个容器
创建容器最好结合”--net=none”选项,防止自动分配IP地址在局域网中产生冲突。
(4)使用pipework工具分配IP地址
执行pipework命令,定义容器网卡的IP地址,不加”-i eth0”选项时默认指定的网卡为eth1
注意:”@”后面跟的是容器的网关,是物理网络中的网关。
(5)测试
使用局域网中的主机ping刚创建的容器的IP地址,发现可以通信。
2)使用openvswitch网桥实现容器的VLAN划分
创建步骤:
(1)安装openvswitch及依赖包
安装依赖包
这里将openvswitch的源码包生成了rpm包,并进行了安装。

会在rpmbuild/RPMS/x86_64/目录下生成rpm包,安装第一个即可。
启动服务
(2)创建网桥ovs1,把物理网卡加到ovs1
查看ovs1和物理物理网卡的状态
同样需要安装pipework工具。
(3)测试

这里创建了五个测试容器
五个容器的IP地址属于同一个网段,前四个属于vlan100,第五个属于vlan200
注意:”@”后面跟的就是vlan的序号。
进入容器test1,发现与test2可以通信,与test5无法通信。
|