多节点直接docker互联
1.节点准备
1 2 |
192.168.0.177 node1 192.168.0.178 node2 |
2.准备 overlay 环境
为支持容器跨主机通信,Docker 提供了 overlay driver。Docerk overlay 网络需要一个 key-value 数据库用于保存网络状态信息,包括 Network、Endpoint、IP 等。Consul、Etcd 和 ZooKeeper 都是 Docker 支持的 key-vlaue 软件,我们这里使用 Consul。(Etcd看另一篇)
3.在node1上面部署consul,命令如下:
1 |
docker run -d -p 8500:8500 -h consul --restart=always --name consul progrium/consul -server -bootstrap |
4.容器启动后,可以通过:http//:192.168.0.177:8500 访问,如图:

5.分别在node1和node2上面修改docker.service的启动命令
1 |
vim /usr/lib/systemd/system/docker.service |
1 2 3 4 5 |
--cluster-store=consul://192.168.0.177:8500 --cluster-advertise=eth0:2376 #参数解析: --cluster-store= 参数指向docker daemon所使用key value service的地址(本例中即etcd的服务地址) --cluster-advertise= 参数决定了所使用网卡以及docker daemon端口信息 |
6.docker配置完成后 需要重新run consul服务
1 |
docker restart donsul |
创建overlay网络
1 2 3 4 |
docker network create -d overlay my_net #或者也可以指定网络段 docker network create -d overlay my_net --subnet 10.10.10.0/24 (指定子网),这里默认是10.0.0.0 |
overlay 是 global 网络,consul 会将 my_net 同步到所有主机
8.测试网络互通
1 2 3 4 |
node1: docker run --net my_net --name demo1 -tid busybox node2 docker run --net my_net --name demo2 -tid busybox |


- 本文固定链接: https://www.yoyoask.com/?p=6520
- 转载请注明: shooter 于 SHOOTER 发表