(转)Docker - 创建 Docker overlay network (containers 通信)

原文链接: http://www.cnblogs.com/AlanWalkOn/p/6101875.html

---

创建基于Key-Value的Docker overlay network。 这样运行在多个nodes上的container就可以通过内部网络进行通信访问了。

安装环境centOS 7.2,Docker:1.12

1. 两台测试机器(172.100.1.17 and 172.100.1.12)必须是唯一的且互相可以解析。

2. 在(172.100.1.17)下载progrim/consul 镜像

3.修改docker daemon 配置信息。创建.conf文件在/etc/systemd/system/docker.service.d。注意网卡名字ifconfig确认下本机IP。

 

[Service - 17]
ExecStart=/usr/bin/dockerd --cluster-store consul://172.100.1.17:8500 --cluster-advertise 172.100.1.17:2376

[Service - 12]
ExecStart=/usr/bin/dockerd --cluster-store consul://172.100.1.17:8500 --cluster-advertise 172.100.1.12:2376
 

--cluster-store consul -> 指向获取 key-value 的机器

--cluster-advertise -> 本机地址,并注意监听端口:2376

 

4. Flush Changes

 

$ sudo systemctl daemon-reload

 

5.重启Docker Daemon

 

$ sudo systemctl restart docker.service

 

注意:两台机器都要重新启动host

 

6. 启动 consul 

 

docker run -d --restart="always"  -p "8500:8500"  -h "consul"  progrium/consul -server -bootstrap

 

 

7. 运行Docker ps 确保consul正常运行

$ docker ps
 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                            NAMES
4d51392253b3        progrium/consul     "/bin/start -server -"   25 minutes ago      Up 25 minutes       53/tcp, 53/udp, 8300-8302/tcp, 0.0.0.0:8500->8500/tcp, 8400/tcp, 8301-8302/udp   admiring_panini

 

 

8. 创建overlay network. 注意subnet地址避免与hosts冲突。

 $ docker network create  --driver overlay --subnet 10.0.9.0/24 my-multi-host-network

 

9. 查看overlay network是否存在

docker network ls

 

10. 在 host 17 (172.100.1.17)运行container使用overlay network

docker run -d --name mybusybox17 --net my-multi-host-network mybusybox

到此基于key-value的overlay network就创建好了。

 

11. 在另外一台机器上 host 12(172.100.1.12)运行container

 

docker run -d --name mybusybox12 --net my-multi-host-network mybusybox

   

12. 进入 container (mybusybox12) 查看 另一个host 17上的 container (mybusybox17)

 

 

 

13.  进入 container (mybusybox17) 查看 另一个host上的 container (mybusybox12)

 

 

到这里,我们就完成了通过overlay模式的网络来联通位于不同 Docker Host 之内的 containers 的通信 :)

 

posted @ 2017-01-12 15:19  TonyZhang24  阅读(1024)  评论(0编辑  收藏  举报