Docker 跨主机互联(Overlay - consul)

环境
| 主机 | IP |
|---|---|
| docker1 | 192.168.31.178 |
| docker2 | 192.168.31.188 |
| docker3 | 192.168.31.150 |
前提:
- 安装好 docker
- 关闭防火墙和 selinux
安装 consul(三个节点)
yum install wget unzip -y
mkdir /data/software -p
cd /data/software
wget https://releases.hashicorp.com/consul/1.10.1/consul_1.10.1_linux_amd64.zip
unzip consul_1.10.1_linux_amd64.zip
mv consul /usr/local/bin/
mkdir /usr/local/consul/conful_config -p
cd /usr/local/consul/conful_config
配置 consul 并启动
# docker1
cat /usr/local/consul/conful_config/config.json
{
"advertise_addr": "192.168.31.178",
"bind_addr": "192.168.31.178",
"data_dir": "/usr/local/consul",
"server": true,
"node_name": "server1",
"enable_syslog": true,
"enable_debug": true,
"log_level": "info",
"bootstrap_expect": 3,
"start_join": ["192.168.31.178","192.168.31.188","192.168.31.150"],
"retry_join": ["192.168.31.178","192.168.31.188","192.168.31.150"],
"ui": true,
"client_addr": "0.0.0.0",
"datacenter": "consulnet"
}
cd /usr/local/consul/
nohup consul agent -config-dir /usr/local/consul/conful_config &
# docker2
cat /usr/local/consul/conful_config/config.json
{
"advertise_addr": "192.168.31.188",
"bind_addr": "192.168.31.188",
"data_dir": "/usr/local/consul",
"server": true,
"node_name": "server2",
"enable_syslog": true,
"enable_debug": true,
"log_level": "info",
"bootstrap_expect": 3,
"start_join": ["192.168.31.178","192.168.31.188","192.168.31.150"],
"retry_join": ["192.168.31.178","192.168.31.188","192.168.31.150"],
"ui": true,
"client_addr": "0.0.0.0",
"datacenter": "consulnet"
}
cd /usr/local/consul/
nohup consul agent -config-dir /usr/local/consul/conful_config &
# docker3
cat /usr/local/consul/conful_config/config.json
{
"advertise_addr": "192.168.31.150",
"bind_addr": "192.168.31.150",
"data_dir": "/usr/local/consul",
"server": true,
"node_name": "server3",
"enable_syslog": true,
"enable_debug": true,
"log_level": "info",
"bootstrap_expect": 3,
"start_join": ["192.168.31.178","192.168.31.188","192.168.31.150"],
"retry_join": ["192.168.31.178","192.168.31.188","192.168.31.150"],
"ui": true,
"client_addr": "0.0.0.0",
"datacenter": "consulnet"
}
cd /usr/local/consul/
nohup consul agent -config-dir /usr/local/consul/conful_config &
检查
consul members
consul operator raft list-peers

通过浏览器访问 http://192.168.31.178:8500/

修改 docker 配置,创建Docker网络并创建容器
# docker1
# 创建Docker网络,只在一个节点创建即可
docker network create --driver overlay consulnet
cat /etc/docker/daemon.json
{
"cluster-store": "consul://192.168.31.178:8500",
"cluster-advertise": "192.168.31.178:2376"
}
systemctl restart docker
docker run -it -d --name test1 --network consulnet centos:centos8
# docker2
cat /etc/docker/daemon.json
{
"cluster-store": "consul://192.168.31.188:8500",
"cluster-advertise": "192.168.31.188:2376"
}
systemctl restart docker
docker run -it -d --name test2 --network consulnet centos:centos8
# docker3
cat /etc/docker/daemon.json
{
"cluster-store": "consul://192.168.31.150:8500",
"cluster-advertise": "192.168.31.150:2376"
}
systemctl restart docker
docker run -it -d --name test3 --network consulnet centos:centos8
测试
docker1

docker2

docker3

自定义 Docker 容器网络
# docker1
docker network create -d overlay --subnet 10.20.20.0/24 consulnet1
docker run -it -d --name test10 --network consulnet1 centos:centos8
# docker2
docker run -it -d --name test20 --network consulnet1 centos:centos8
# docker3
docker run -it -d --name test30 --network consulnet1 centos:centos8
测试
docker1

docker2

docker3


浙公网安备 33010602011771号