文章目錄
- Docker Compose
- yaml檔案
- Docker Swarm
- 主機之間的開放協議和埠
- 搭建集群
- 在manager服務器上初始化節點
- 為worker1,worker2,worker3服務器添加節點
- 可以自定義獲取令牌
- 洗掉節點
- 強制洗掉節點
- 如果`報錯`,可能是防火墻沒有關閉,或者是前面所說的埠沒有打開;
- 查看全部節點加入到集群成功(雙主雙從)
- 集群啟動
Docker Compose
Compose是用于定義和運行多容器Docker應用程式的工具,通過Compose,您可以使用YAML檔案來配置應用程式的服務,然后,使用一個命令,就可以從配置中創建并啟動所有服務;Compose可在所有環境中作業:生產,登臺,開發,測驗以及CI作業流,Docker Compose輕松高效的管理容器
使用Compose基本上是一個三步程序:
- 使用定義您的應用環境,
Dockerfile以便可以在任何地方復制它, - 定義組成應用程式的服務,
docker-compose.yml以便它們可以在隔離的環境中一起運行, - “運行
docker-compose up并撰寫”將啟動并運行您的整個應用程式,
一個docker-compose.yml看起來像這樣:
version: "3.9" # optional since v1.27.0
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
- 安裝Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#官網地址超慢,備用地址:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.28.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
- 將可執行權限應用于二進制檔案:
sudo chmod +x /usr/local/bin/docker-compose
- 官方體驗案例
- 通過官方給的案例,可以看出,創建了四個檔案
[root@jf-server02 composetest]# ll
total 16
-rw-r--r-- 1 root root 514 Mar 1 00:41 app.py #應用
-rw-r--r-- 1 root root 111 Mar 1 00:45 docker-compose.yml #定義服務
-rw-r--r-- 1 root root 252 Mar 1 00:44 Dockerfile #構建鏡像
-rw-r--r-- 1 root root 12 Mar 1 00:42 requirements.txt
- 運行compose
docker-compose up
- 如果您開始使用Compose with
docker-compose up -d,請在完成服務后停止它們:
$ docker-compose stop
- 您可以使用
down命令降低所有內容,完全洗掉容器,通過--volumes還洗掉Redis容器使用的資料量:
$ docker-compose down --volumes
yaml檔案
- docker-compose.yaml規則
#3層
version: '' #版本
services: '' #服務
服務1:web
#服務配置
images
build
network
........
服務2:redis
.......
#其他配置
volumes:
networks:
configs:
docker compose官方檔案
Docker Swarm
搭建docker集群
至少4臺服務器
其中一臺機器是管理員(稱為manager1),其中三臺機器是工人(worker1和worker2, worker3),
主機之間的開放協議和埠
以下埠必須可用,在某些系統上,這些埠默認情況下處于打開狀態,
- 用于群集管理通信的TCP埠2377
- TCP和UDP埠7946,用于節點之間的通信
- UDP埠4789,用于覆寫網路流量
搭建集群
[root@centos7 ~]# docker swarm --help #swarm命令詳細
Usage: docker swarm COMMAND
Manage Swarm
Options:
--help Print usage
Commands:
init Initialize a swarm
join Join a swarm as a node and/or manager
join-token Manage join tokens
leave Leave the swarm
unlock Unlock swarm
unlock-key Manage the unlock key
update Update the swarm
在manager服務器上初始化節點
[root@centos7 ~]# docker swarm init --advertise-addr 192.168.69.131
Swarm initialized: current node (3auwqn07akc4dm09p0h37o7re) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-2loul1d5zds3bgir4crfh7stgq89r4hvzaznw7frg95dbx2jwc-3z3yeiwz9n35q2xqc6c3elt2o \
192.168.69.131:2377
為worker1,worker2,worker3服務器添加節點
[root@centos7 ~]# docker swarm join --token SWMTKN-1-2loul1d5zds3bgir4crfh7stgq89r4hvzaznw7frg95dbx2jwc-3z3yeiwz9n35q2xqc6c3elt2o 192.168.69.131:2377
This node joined a swarm as a worker.
可以自定義獲取令牌
#獲取令牌
docker swarm join-token manager #管理者
docker swarm join-token worker #作業者
洗掉節點
- 在manager服務器上
docker node update --availability drain 節點ID #使要洗掉節點離開容器
- 在該節點服務器上
# 讓節點主動離開集群,讓節點處于down狀態
docker swarm leave
- 洗掉 node節點
# 洗掉 node節點(在 manager 上操作)
docker node rm 節點ID
強制洗掉節點
- 在強行洗掉管理器節點之前,必須首先將其降級為作業角色
$ docker node rm --force node9
如果報錯,可能是防火墻沒有關閉,或者是前面所說的埠沒有打開;
- 查看防火墻狀態
firewall-cmd --state
- 停止firewall
systemctl stop firewalld.service
- 禁止firewall開機啟動
systemctl disable firewalld.service
查看全部節點加入到集群成功(雙主雙從)
[root@centos7 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
3auwqn07akc4dm09p0h37o7re * centos7 Ready Active Leader
gmphg1ronedtyu6lohgju3e56 centos7 Ready Active
jcizbovjafu4z9t5n4vr98eah centos7 Ready Active
ycp95fmaycx841vl6tz8kf04v centos7 Ready Active Reachable
Docker的Raft協議保證集群要大于兩臺(manager)在線,如果只剩一臺則無法使用集群;

集群啟動
啟動nginx
docker service create -p 8888:80 --name mynginx nginx
[root@centos7 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE
9lp4yohv9l8e mynginx replicated 1/1 nginx:latest
動態擴縮容,節點隨機分配;
[root@centos7 ~]# docker service update --replicas 3 mynginx #創建三個副本
回滾到原來位置
[root@centos7 ~]# docker service update --replicas 1 mynginx #回滾
使用scale
[root@centos7 ~]# docker service scale mynginx=5 #擴展五臺
一鍵三連
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/265958.html
標籤:其他
上一篇:微服務拆分參考原則串列
