目錄
1.前章回顧
2.docker-compose簡介
3.docker-compose安裝
4.編寫docker-compose.yml
5.docker-compose啟動
注意網絡問題:
6.修改consul另外節點的join IP
7.啟動,檢視
1.前章回顧
https://blog.csdn.net/wzy_168/article/details/100518527
上一章使用了docker指令部署consul叢集,但是每次都敲指令太麻煩了,可以使用docker-compose簡化。
2.docker-compose簡介
本章内容參考官網:https://docs.docker.com/compose/
Compose是一個用于定義和運作多容器Docker應用程式的工具。使用Compose,您可以使用YAML檔案來配置應用程式的服務。然後,使用單個指令,您可以從配置中建立并啟動所有服務。
3.docker-compose安裝
進入官網,https://docs.docker.com/compose/install/,選擇linux,可以找到安裝指令
#運作此指令以下載下傳Docker Compose的目前穩定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#對二進制檔案應用可執行權限:
sudo chmod +x /usr/local/bin/docker-compose
#可以移到到你需要的目錄下,也可以不移動,如果移動,例如
mv /usr/local/bin/docker-compose /docker/docker-compose
#可以再建立一個連結就行
sudo ln -s /docker/docker-compose /usr/bin/docker-compose
#測試安裝
$ docker-compose --version
docker-compose version 1.24.1, build 1110ad01
4.編寫docker-compose.yml
version: '3'
services:
#服務名
consul_server_1:
#容器名
container_name: consul_server_1
#使用的鏡像
image: consul:1.6.0
#映射的端口
ports:
- "8500:8500"
#使用的網絡
networks:
- consul
#映射的目錄
volumes:
- /docker/consul/server1/config:/consul/config
- /docker/consul/server1/data:/consul/data
#需要導入的環境變量
environment:
- CONSUL_BIND_INTERFACE=eth0
- TZ=Asia/Shanghai
#是否伴随docker重新開機
restart: always
#執行的指令
command: [
'agent'
]
#使用自定義網絡,這樣每次啟動就不會建立新的網絡了,ip相對固定
networks:
consul:
5.docker-compose啟動
#啟動/停止都需要進入到docker-compose.yml目錄下
#啟動指令-前台運作
docker-compose up
#啟動指令-背景運作
docker-compose up -d
#停止指令
docker-compose stop
#更多指令進入官網學習:https://docs.docker.com/compose/
注意網絡問題:
- docker-compose使用的是docker網絡
#檢視現有docker網絡
docker network ls
#删除一個網絡
docker network rm +name
#檢視一個網絡的詳情
docker network inspect +name
#docker-compose網絡設定
#自定義網絡
networks:
frontend:
backend:
#使用預設網絡
networks:
default:
# Use a custom driver
driver: custom-driver-1
#使用現有網絡
networks:
default:
external:
name: my-pre-existing-network
#更多參考官網:https://docs.docker.com/compose/networking/
6.修改consul另外節點的join IP
擷取consul_server_1的ip,可以根據啟動日志,或者運作完之後執行docker exec consul_server_1 consul members檢視IP
或
修改其餘consul配置的join ip
在docker-compose.yml中增加其他節點服務,完整配置如下:
version: '3'
services:
consul_server_1:
container_name: consul_server_1
image: consul:1.6.0
ports:
- "8500:8500"
networks:
- consul
volumes:
- /docker/consul/server1/config:/consul/config
- /docker/consul/server1/data:/consul/data
environment:
- CONSUL_BIND_INTERFACE=eth0
- TZ=Asia/Shanghai
restart: always
command: [
'agent'
]
consul_server_2:
container_name: consul_server_2
image: consul:1.6.0
networks:
- consul
volumes:
- /docker/consul/server2/config:/consul/config
- /docker/consul/server2/data:/consul/data
environment:
- CONSUL_BIND_INTERFACE=eth0
- TZ=Asia/Shanghai
restart: always
command: [
'agent'
]
consul_server_3:
container_name: consul_server_3
image: consul:1.6.0
networks:
- consul
volumes:
- /docker/consul/server3/config:/consul/config
- /docker/consul/server3/data:/consul/data
environment:
- CONSUL_BIND_INTERFACE=eth0
- TZ=Asia/Shanghai
restart: always
command: [
'agent'
]
consul_client_1:
container_name: consul_client_1
image: consul:1.6.0
networks:
- consul
volumes:
- /docker/consul/client1/config:/consul/config
- /docker/consul/client1/data:/consul/data
environment:
- CONSUL_BIND_INTERFACE=eth0
- TZ=Asia/Shanghai
restart: always
command: [
'agent'
]
networks:
consul:
7.啟動,檢視
服務均正常,以後啟動隻需要docker-compose up -d 和 docker-compose stop即可,大大友善!
增加強定IP部署配置
version: '3'
services:
consul_server_1:
container_name: consul_server_1
image: consul:1.6.0
ports:
- "8500:8500"
networks:
consul:
ipv4_address: 172.20.0.2
volumes:
- /docker/consul/server1/config:/consul/config
- /docker/consul/server1/data:/consul/data
environment:
- CONSUL_BIND_INTERFACE=eth0
- TZ=Asia/Shanghai
restart: always
command: [
'agent'
]
consul_server_2:
container_name: consul_server_2
image: consul:1.6.0
networks:
consul:
ipv4_address: 172.20.0.3
volumes:
- /docker/consul/server2/config:/consul/config
- /docker/consul/server2/data:/consul/data
environment:
- CONSUL_BIND_INTERFACE=eth0
- TZ=Asia/Shanghai
restart: always
command: [
'agent'
]
consul_server_3:
container_name: consul_server_3
image: consul:1.6.0
networks:
consul:
ipv4_address: 172.20.0.4
volumes:
- /docker/consul/server3/config:/consul/config
- /docker/consul/server3/data:/consul/data
environment:
- CONSUL_BIND_INTERFACE=eth0
- TZ=Asia/Shanghai
restart: always
command: [
'agent'
]
consul_client_1:
container_name: consul_client_1
image: consul:1.6.0
networks:
consul:
ipv4_address: 172.20.0.5
volumes:
- /docker/consul/client1/config:/consul/config
- /docker/consul/client1/data:/consul/data
environment:
- CONSUL_BIND_INTERFACE=eth0
- TZ=Asia/Shanghai
restart: always
command: [
'agent'
]
networks:
consul:
ipam:
config:
- subnet: 172.20.0.0/16