为了支持容器跨主机通信,Docker提供了overlay driver,使用户可以创建基于VxLAN的overlay网络。VxLVAN可将二层数据封装到UDP进行传输,VxLAN提供与VLAN相同的以太网二层服务,但是拥有更强的扩展性和灵活性。
VxLAN相关信息可以参考(
https://www.cnblogs.com/CloudMan6/p/6028283.html)
Docker overlay网络需要一个 key-value数据库用于保存网络状态信息,包括network、endpoint、ip等。Consul、Etcd、和 Zookeeper 都是Docker支持的 key-value软件,我们这里使用Consul
# 0、准备三台机器
1、docker-machine(123.58.8.184),安装Consul
2、host01(123.58.8.20)
3、host02(123.58.8.75)
# 1、在docker-machine机器上运行 Consul的容器,并配置防火墙
[root@Docker-Machine ~]# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
[root@Docker-Machine ~]# ufw allow 8500
# 2、访问 http://123.58.8.184 即可访问Consul
# 3、修改host01 和 host02 上 docker daemon 配置文件 /etc/systemd/system/docker.service.d/10-machine.conf
添加如下信息
--cluster-store 指定 consul 的地址。
--cluster-advertise 告知 consul 自己的连接地址。
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --storage-driver overlay2 --tlsverify --tlscacert /etc/docker/ca.pem --tlscert /etc/docker/server.pem --tlskey /etc/docker/server-key.pem --label provider=generic
--cluster-store=consul://123.58.8.184:8500 --cluster-advertise=ens4:2376
# 4、重启docker daemon
root@host01:~# systemctl daemon-reload
root@host01:~# systemctl restart docker.service
# 5、最后去consul的页面上查看自动注册情况
![](https://i-blog.csdnimg.cn/blog_migrate/77296a53f2bb1cd4b5611509003ec7e5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f1ecf8ea7dd46294c296cf9103c7940b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8c37e68a3110652ccc6b18d2ad354fe5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9fd5c6378572b474ab4a38f32bf6f64a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/00599ddbf43244498255b3b640a5c663.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4b0098547669af68edf701cf43986d1d.png)