優(yōu)點:
- 可以自動分配IP地址不需要手動指定
- 集中起來管理IP地址的數(shù)據(jù)庫,不需要手動安裝,起一個容器就好,集中管理IP地址分配情況,避免IP地址沖突
consul服務類似于redis里的key:value類型存儲的是鍵值對,可以當數(shù)據(jù)庫來使用
準備環(huán)境(至少需要兩臺臺機器)這邊準備三臺

image.png
配置:
在consul服務上 先pull一個consul的鏡像服務
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
參數(shù)分解:
-h ### 指定容器里面主機名
--name ###指定容器的名字

image.png
docker 01 和 02 上
## docker01:
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries":["10.0.0.11"],
"hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
"cluster-store": "consul://10.0.0.13:8500",
"cluster-advertise": "10.0.0.11:2376"
}
## docker02:
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries":["10.0.0.11"],
"hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
"cluster-store": "consul://10.0.0.13:8500",
"cluster-advertise": "10.0.0.12:2376"
}
配置文件
hosts:監(jiān)聽的信息 通過sock的通信
cluster-store:集群存儲信息
cluster-advertise:集群客戶端信息
重啟:
systemctl restart docker
-
如果重啟有報錯信息
image.png
解決辦法
查看一下報錯的配置文件路徑
systemctl status docker
vim /usr/lib/systemd/system/docker.service
刪掉!

image.png
systemctl daemon-reload
systemctl start docker

image.png

image.png
看到以上信息后,創(chuàng)建overlay全局網(wǎng)絡
## 只要在一個節(jié)點創(chuàng)建會自動同步到其他節(jié)點
docker network create -d overlay --subnet 172.16.1.0/24 --gateway 172.16.1.254 ol1
啟動容器測試
### docker01
docker run -it --network ol1 --name couldman01 busybox /bin/sh
### docker02
docker run -it --network ol1 --name couldman02 busybox /bin/sh
這里測試ping的時候不需要ip地址 只需要知道容器名,自動解析成IP地址

image.png
IP地址會自動分配全局唯一不會沖突 ,IP地址也會記錄到consul數(shù)據(jù)里
會自動分配兩個IP地址一個是跨宿主機通信用,另一個是用來上外網(wǎng)用 查看網(wǎng)關route -n
上網(wǎng)通信原理
宿主機默認eth0(10.0.0.11)網(wǎng)卡,overlay啟動之后會自動起一個網(wǎng)關(bw_gatevay/172.18.0.1), 容器有兩個IP地址eth1和eth0,eht1會通過宿主機的網(wǎng)關,nat轉換,內核轉發(fā)在到宿主機eth0上外網(wǎng),宿主機之間通信 如果兩臺容器 ,兩臺容器的eth0打通一個隧道(類似交換機),eht0實現(xiàn)跨宿主機之間容器通信,eth1上外網(wǎng)
