Docker 跨主机网络(十六)

一、跨主机网络概述

前面已经学习了 Docker 的几种网络方案:none、host、bridge 和 joined 容器,它们解决了单个 Docker Host 内容器通信的问题。本章的重点则是讨论跨主机容器间通信的方案。

Docker 跨主机网络(十六)

docker 原生的 overlay 和 macvlan。
第三方方案:常用的包括 flannel、weave 和 calico。

二、准备 overlay 环境

为支持容器跨主机通信,Docker 提供了 overlay driver。Docerk overlay 网络需要一个 key-value 数据库用于保存网络状态信息,包括 Network、Endpoint、IP 等。Consul、Etcd 和 ZooKeeper 都是 Docker 支持的 key-vlaue 软件,我们这里使用 Consul。

1、环境描述

我们会直接使用上一节 docker-machine 创建的实验环境。在 docker 主机 host1(192.168.1.201)和 host2(192.168.1.203)上实践各种跨主机网络方案,在 192.168.1.200 上部署支持的组件,比如 Consul。

2、创建 consul

在 192.168.1.200 这台设备上面执行如下命令。

docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

容器启动后,可以通过 http://192.168.1.200:8500 访问 Consul。

Docker 跨主机网络(十六)

3、修改 docker 配置文件

接下来修改 host1 和 host2 的 docker daemon 的配置文件 /etc/systemd/system/docker.service.d/10-machine.conf。

Docker 跨主机网络(十六)

--cluster-store 指定 consul 的地址。
--cluster-advertise 告知 consul 自己的连接地址。

重启 docker daemon。

systemctl daemon-reload  
systemctl restart docker.service

host1 和 host2 将自动注册到 Consul 数据库中。

Docker 跨主机网络(十六)

4、准备就绪

准备就绪,实验环境如下图:

Docker 跨主机网络(十六)

猜你喜欢

转载自blog.51cto.com/wzlinux/2112061