延续昨天介绍Docker Network 的部份,已经实作了none、container、host、bridge 的模式,今天要来实作的是overlay 网络模式,这种模式主要是在不同的实体主机内的Container 之间可以互相的沟通,如下图:
上图主要是说明 Host1 实体主机里面有 Container1,然后 Host2 实体主机里面有 Container2,可以透过 Docker Overlay 的 Network 的模式将 Container1 和 Container2 连接起来做沟通。另外 Consol 是一个存放连线资讯的资料库,在使用 overlay 时必需要在 Docker 设定,这样才能存放 overlay 网络模式的连线资讯。
另外在使用 overlay 网络模式时,要先确认 Linux Kernel 的版本。目前我使用的版本是 3.19.8 是可以正常执行的。
Example:
使用 Docker Overlay的网络模式,实作不同的实体主机之间的 container 可以互相的连接,步骤如下:
切换到 root 使用者,修改 Host1 的 Docker 设定,指令如下:
设定档如下:
主要的设定就是 cluster-store 和 cluster-advertise,分别是要连接到 consul 的 service,取得 overlay 网络模式的连线资讯,以及设定可以让不同实体主机连线的网卡。
2. 重新启动 Host1 的 Docker Service 指令如下:
3. 在 Host1 使用启动 docker container 的方式启动 consul service,指令如下
4. 在 Host1,使用 docker network 指令建立一个 overlay1 的网络,指令如下
使用 docker network ls,查看建立之后的结果,画面如下
5. 在 Host1 启动一个连接到 overlay1 的 container,指令如下
6. 开一个新视窗,到 Host2 修改 Docker 的设定如下
设定如下:
以上的设定和 Host1 是很像的。
7. 在 Host2 上重新启动 Docker service 指令如下
8. 在 Host2 上,使用 docker network ls 指令确认是否有连到 consol service,画面如下
9. 在 Host2 上启动一个 container,并且连到 overlay1 的网络,指令如下
10. 测试在 container1 ping 到 container2 的 IP
container2 的画面如下:
container1 的画面如下:
今天介绍主要是透过 Docker 的 Overlay Network 模式,把不同实体主机上的 Container 连接在一起,这样就可以把 Container 分散在不同的实体机器上执行。
閱讀更多 Java高級開發工程師 的文章