Docker 跨主机互联(Overlay - etcd)

环境
| 主机 | IP |
|---|---|
| docker1 | 192.168.31.178 |
| docker2 | 192.168.31.188 |
| docker3 | 192.168.31.150 |
前提:
- 安装好 docker
- 关闭防火墙和 selinux
安装 etcd(三个节点)
yum install etcd -y
配置 etcd
docker1
# 需要修改的地方
vi /etc/etcd/etcd.conf
ETCD_LISTEN_PEER_URLS="http://192.168.31.178:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.31.178:2379,http://127.0.0.1:2379"
ETCD_NAME="node1"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.31.178:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.31.178:2379"
ETCD_INITIAL_CLUSTER="node1=http://192.168.31.178:2380,node2=http://192.168.31.188:2380,node3=http://192.168.31.150:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
# 启动
systemctl start etcd
docker2
# 需要修改的地方
vi /etc/etcd/etcd.conf
ETCD_LISTEN_PEER_URLS="http://192.168.31.188:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.31.188:2379,http://127.0.0.1:2379"
ETCD_NAME="node2"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.31.188:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.31.188:2379"
ETCD_INITIAL_CLUSTER="node1=http://192.168.31.178:2380,node2=http://192.168.31.188:2380,node3=http://192.168.31.150:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
# 启动
systemctl start etcd
docker3
# 需要修改的地方
vi /etc/etcd/etcd.conf
ETCD_LISTEN_PEER_URLS="http://192.168.31.150:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.31.150:2379,http://127.0.0.1:2379"
ETCD_NAME="node3"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.31.150:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.31.150:2379"
ETCD_INITIAL_CLUSTER="node1=http://192.168.31.178:2380,node2=http://192.168.31.188:2380,node3=http://192.168.31.150:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
# 启动
systemctl start etcd
检查 etcd
etcdctl member list
etcdctl cluster-health

修改 Docker 配置参数
docker1
cat /etc/docker/daemon.json
{
"cluster-store": "etcd://192.168.31.178:2379",
"cluster-advertise": "192.168.31.178:2379"
}
systemctl restart docker
docker2
cat /etc/docker/daemon.json
{
"cluster-store": "etcd://192.168.31.188:2379",
"cluster-advertise": "192.168.31.188:2379"
}
systemctl restart docker
docker3
cat /etc/docker/daemon.json
{
"cluster-store": "etcd://192.168.31.150:2379",
"cluster-advertise": "192.168.31.150:2379"
}
systemctl restart docker
创建 Docker 网络和容器
# docker1
docker network create --driver overlay etcdnet
docker run -it -d --name etcdtest1 --network etcdnet centos:centos8
# docker2
docker run -it -d --name etcdtest2 --network etcdnet centos:centos8
# docker3
docker run -it -d --name etcdtest3 --network etcdnet centos:centos8
测试
docker1

docker2

docker3

创建自定义 Docker 网络
docker1
docker network create --driver overlay --subnet 10.20.20.0/24 etcdnet2
docker run -it -d --name etcd2test1 --network etcdnet2 centos:centos8
docker2
docker run -it -d --name etcd2test2 --network etcdnet2 centos:centos8
docker3
docker run -it -d --name etcd2test3 --network etcdnet2 centos:centos8
测试
docker1

docker2

docker3


浙公网安备 33010602011771号