1.linking系统

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

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

创建步骤:

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

容器互联


2)再创建父容器

容器互联

--link标记的格式:--link name:aliasname是子容器的名称,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无法通信。

转载于:https://blog.51cto.com/fengjicheng/1901691

相关文章:

  • 2021-09-05
  • 2021-10-24
  • 2021-10-07
  • 2022-12-23
  • 2021-11-19
  • 2021-11-06
  • 2022-02-27
  • 2022-12-23
猜你喜欢
  • 2021-11-11
  • 2022-01-19
  • 2021-10-03
  • 2022-12-23
  • 2022-12-23
  • 2020-01-05
相关资源
相似解决方案