Docker多host网络访问-overlay方式
1.配置consul数据库
Docerk overlay 网络需要一个 key-value 数据库用于保存网络状态信息,包括 Network、Endpoint、IP 等。Consul、Etcd 和 ZooKeeper 都是 Docker 支持的 key-vlaue 软件。
consul是一种key-value数据库,可以用它存储系统的状态信息等,当然这里我们并不需要写代码,只需要安装consul,之后docker会自动进行状态存储等。最简单的安装consul数据库的方法是直接使用 docker 运行 consul 容器。
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
修改host1和host2的docker daemon配置
目的是让consul发现各个docker主机节点
vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
--cluster-store=consul://192.168.134.130:8500
--cluster-advertise 192.168.134.128:2375
修改ExecStart
–cluster-store 指定 consul 的地址。
–cluster-advertise 告知 consul 自己的连接地址。
修改完后加载新的配置文件,重启docker服务
systemctl daemon-reload
systemctl restart docker
启动后可以在浏览器用host ip地址的8500端口查看consul服务
2.创建overlay网络
在host1上创建overlay网络
docker network create -d overlay ov_net1
只需要在一个节点中进行上述创建过程,其他节点自动会识别到该网络,原因正是在于consul的服务发现功能。
可以使用docker network或docker network inspect ov_net1查看,所有主机都能看到
3.创建容器加入overlay网络
host1:docker run -itd --name bbox1 --net ov_net1 busybox
host2:docker run -itd --name bbox2 --net ov_net1 busybox
测试联通性
ping 10.0.0.2