Docker 跨主机互联(Overlay - consul)

环境

主机 IP
docker1 192.168.31.178
docker2 192.168.31.188
docker3 192.168.31.150

前提:

  1. 安装好 docker
  2. 关闭防火墙和 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

posted @ 2021-08-22 12:18  klvchen  阅读(373)  评论(0)    收藏  举报