(二)准备 Overlay 网络实验环境

​ 为支持容器跨主机通信,Docker 提供了 overlay driver,使用户可以创建基于 VxLAN 的 overlay 网络。VxLAN 可将二层数据封装到 UDP 进行传输,VxLAN 提供与 VLAN 相同的以太网二层服务,但是拥有更强的扩展性和灵活性。

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

(1)实验环境描述

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

最简单的方式是以容器方式运行 Consul:

root@cuiyongchao:~# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
Unable to find image 'progrium/consul:latest' locally
latest: Pulling from progrium/consul
Image docker.io/progrium/consul:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
c862d82a67a2: Pull complete 
0e7f3c08384e: Pull complete 
0e221e32327a: Pull complete 
09a952464e47: Pull complete 
60a1b927414d: Pull complete 
4c9f46b5ccce: Pull complete 
417d86672aa4: Pull complete 
b0d47ad24447: Pull complete 
fd5300bd53f0: Pull complete 
a3ed95caeb02: Pull complete 
d023b445076e: Pull complete 
ba8851f89e33: Pull complete 
5d1cefca2a28: Pull complete 
Digest: sha256:8cc8023462905929df9a79ff67ee435a36848ce7a10f18d6d0faba9306b97274
Status: Downloaded newer image for progrium/consul:latest
dd2630bfaa0d702a3bcaaccb2d5ac5de206bb5306bdef64e7c1196323a9bfe65
root@cuiyongchao:~# 

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

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

root@host1:~# vi  /lib/systemd/system/docker.service
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 --insecure-registry 10.0.0.20:5000 --cluster-store consul://10.0.0.20:8500 --cluster-advertise 10.0.0.22:2376 --insecure-registry 10.0.0.20:5000 --cluster-store consul://10.0.0.20:8500 --cluster-advertise 10.0.0.21:2376

root@host1:~# 

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

重启 docker daemon。

systemctl daemon-reload  
systemctl restart docker.service

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

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/cuiyongchao007/p/14077731.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!