不同PC间的容器间的通信设计
1、背景及概述
1.1、背景
最近在做的一个项目,需要进行容器的网络设计,容器的网络可以分为三种:①容器与宿主机的通信。②容器与外部PC的通信。③容器之间的通信。其中容器间的通信又涉及到同一台PC之间的通信和不同PC之间的通信。本文档主要讲不同PC容器间的通信。目标有两点:①容器ip得到固定。②容器之间能互相通信。
1.2、概述
本手册以如下网络关系作讲解,为了使得验证具有普遍性,特设计两个容器ip为自定义非同网段ip,HOST主机ip与容器非同网段。
图1 网络关系图
2、环境准备
目标是为了在两台PC上部署两个网段不同的容器app1和app2。
2.1、app1环境部署
1)在宿主机ip为192.168.0.50的环境上建立网络mynetwork,网段分别配置为192.17.0.0/24
$ docker network create -d bridge --subnet=192.17.0.0/24 mynetwork
2)固定容器IP为192.17.0.2,宿主机端口为8022,容器端口为22。
$ docker run -it -p 8022:22 --name app1 --net mynetwork --ip 192.17.0.2 --privileged=true 970b9230259a bash
$ docker network ls
3)开启ssh服务
$ apt-get install openssh-server
$ apt-get install openssh-client
$ /etc/init.d/ssh start
$ ps -e | grep ssh
2.2、app2环境部署
1)在宿主机ip为192.168.0.150的环境上建立网络mynetwork,网段分别配置为182.17.0.0/24
$ docker network create -d bridge --subnet=182.17.0.0/24 mynetwork
2)固定容器IP为182.17.0.2,宿主机端口为8022,容器端口为22。
$ docker run -it -p 8022:22 --name app1 --net mynetwork --ip 182.17.0.2 --privileged=true 970b9230259a bash
$ docker network ls
3)开启ssh服务
详细操作步骤参考文档:
http://3ms.huawei.com/hi/group/3289503/wiki_7152257.html?for_statistic_from=creation_group_wiki
$ apt-get install openssh-server
$ apt-get install openssh-client
$ /etc/init.d/ssh start
$ ps -e | grep ssh
3、网络通信校验
本次校验通过两种方式进行校验,一种是通过两个容器之间能够通过ssh互相连接访问,另一种是通过tcpping工具相互Ping对方。
3.1、ssh校验
本校验已默认前面的环境已准备,ssh服务端和客服端已安装启动。
在app1侧:
$ ssh root@192.168.0.150 -p 8022
在app2侧:
$ ssh root@192.168.0.50 -p 8022
结果显示不同PC之间的两个容器可以互相用ssh连接访问。
3.2、tcpping验证
1)tcpping安装
$ sudo apt-get install tcptraceroute
$ sudo apt-get install bc
$ cp tcpping /usr/bin #tcpping工具附件提供,或者在网站下载http://www.vdberg.org/~richard/tcpping
$ chmod 755 tcpping
2)tcpping验证
在app1侧:
$ tcpping 192.168.0.150 8022
在app2侧:
$ tcpping 192.168.0.50 8022