创建基于Key-Value的Docker overlay network。 这样运行在多个nodes上的container就可以通过内部网络进行通信访问了。
安装环境Ubuntu16.04,Docker:1.12
1. 集群中的hosts name必须是唯一的且互相可以解析。
2. 安装Distributed Store.Docker支持Consul,Etcd,Zookeeper 。 这里选择安装Consul。
docker run -d --restart="always" -p "8500:8500" -h "consul" progrium/consul -server -bootstrap
3. 运行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
4. 修改docker daemon 配置信息。创建.conf文件在/etc/systemd/system/docker.service.d。注意网卡名字ifconfig确认下。
[Service]ExecStart=ExecStart=/usr/bin/docker daemon -H fd:// --cluster-store consul://consul-host-ip:8500 --cluster-advertise eth0:2376
5. Flush Changes
$ sudo systemctl daemon-reload
6.重启Docker Daemon
$ sudo systemctl restart docker
7. 创建overlay network. 注意subnet地址避免与hosts冲突。
$ docker network create --driver overlay --subnet 10.0.9.0/24 my-multi-host-network
8. 查看overlay network是否存在
docker network ls
9. 运行container使用overlay network
docker run -d --name web --net my-multi-host-network nginx
到此基于key-value的overlay network就创建好了。