創作不易,來了的客官點點關注,收藏,訂閱一鍵三連?😜

前言
運維之基礎——Linux,我是一個即將畢業的大學生,超超,如果你也在學習Linux,不妨跟著萌新超超一起學習Linux,拿下Linux,一起加油,共同努力,拿到理想offer!
系列文章
Linux進階 | docker compose的安裝與使用詳解,超詳細!
Linux進階 | Docker部署nginx的web服務,VOLUME的使用詳解,實作資料持久化!
Linux進階 | 2萬字總結最詳細的Docker的安裝、底層隔離機制和簡單使用!
Linux | 詳解系統監控和常用命令(top free dstat)
概述
Docker 屬于 Linux 容器的一種封裝,提供簡單易用的容器使用介面,它是目前最流行的 Linux 容器解決方案,本期內容為Docker第五期,通過本期內容將會掌握集群的概念,以及swarm的安裝部署,以及swarm和compose以及volume的結合,
目錄
前言
概述
超超Docker學習思維導圖
集群(cluster)
集群的優勢
swarm(蜂群)的概念
什么是swarm
swarm與compose
swarm與k8s
swarm的優勢
swarm的基本結構
swarm的關鍵點
swarm的使用綱要
swarm的使用
swarm的其他命令
swarm集群部署web服務
思考:swarm manager 是通過什么方式和swarm node進行通信的?
鏡像的滾動升級操作
結合compose和swarm進行多服務的編排
compose和swarm結合有什么優勢
代碼實體部署
Swarm中使用Volume
問題:如何解決web服務的網頁保持一致?
超超Docker學習思維導圖

集群(cluster)
多臺機器完成某個功能,計算機集群簡稱集群,是一種計算機系統,它通過一組松散集成的計算機軟體(和/或)硬體連接起來高度緊密地協作完成計算作業,
舉個生活實體:單點(非集群)模式,就類似銀行只開放一個視窗來辦理業務,而通過建立集群,就相當于一個銀行開通多個視窗辦理業務,那么這樣不僅能提高辦事效率,還能減少風險,
集群的優勢
高可伸縮性:服務器集群具有很強的可伸縮性,隨著需求和負荷的增長,可以向集群系統添加更多的服務器,在這樣的配置中,可以有多臺服務器執行相同的應用和資料庫操作,
高可用性:高可用性是指,在不需要操作者干預的情況下,防止系統發生故障或從故障中自動恢復的能力,通過把故障服務器上的應用程式轉移到備份服務器上運行,集群系統能夠把正常運行時間提高到大于99.9%,大大減少服務器和應用程式的停機時間,
高可管理性:系統管理員可以從遠程管理一個、甚至一組集群,就好像在單機系統中一樣,
swarm(蜂群)的概念
什么是swarm
對多臺安裝了Docker的宿主機上的容器進行編排,
Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干臺Docker主機抽象為一個整體,并且通過一個入口統一管理這些Docker主機上的各種Docker資源,
一個 swarm 由多個 Docker 主機組成,它們以swarm 模式運行并充當管理器(管理成員資格和委派)和作業器(運行 swarm 服務),
一個給定的 Docker 主機可以是管理者、作業者,或同時扮演這兩個角色,
swarm與compose
Docker Swarm 和 Docker Compose 一樣,都是 Docker 官方容器編排專案,但不同的是,Docker Compose 是在一個單個服務器或主機上創建多個容器的工具,而 Docker Swarm 則可以在多個服務器或主機上創建容器集群服務,對于微服務的部署,顯然 Docker Swarm 會更加適合,
swarm與k8s
Swarm和Kubernetes比較類似,但是更加輕,具有的功能也較kubernetes更少一些,
swarm的優勢
與獨立容器相比,swarm 服務的主要優勢之一是可以修改服務的配置,包括它所連接的網路和卷,而無需手動重新啟動服務,Docker 將更新配置,停止使用過期配置的服務任務,并創建與所需配置匹配的新任務,
swarm的基本結構

在以上結構圖可以看出Docker Client使用Swarm對集群(Cluster)進行調度使用,
swarm的關鍵點
1.Swarm
集群的管理和編排是使用嵌入docker引擎的SwarmKit,可以在docker初始化時啟動swarm模式或者加入已存在的swarm
2.Node
一個節點是docker引擎集群的一個實體,您還可以將其視為Docker節點,您可以在單個物理計算機或云服務器上運行一個或多個節點,但生產群集部署通常包括分布在多個物理和云計算機上的Docker節點,
要將應用程式部署到swarm,請將服務定義提交給Manager節點,Manager節點將Task的作業單元分派給worker node,
Manager節點還執行維護所需群集狀態所需的編排和集群管理功能,Manager節點選擇單個領導者來執行編排任務,
作業節點接收并執行從管理器節點分派的任務,默認情況下,Manager節點還將服務作為作業節點運行,但您可以將它們配置為僅運行管理器任務并且是僅管理器節點,代理程式在每個作業程式節點上運行,并報告分配給它的任務,Worker node向Manager節點通知其分配的任務的當前狀態,以便管理器可以維持每個作業者的期望狀態,
3.Service
一個服務是Task的定義,Manager或Work node上執行,它是群體系統的中心結構,是用戶與群體互動的主要根源,創建服務時,你需要指定要使用的容器鏡像,
4.Task
任務是在docekr容器中執行的命令,Manager節點根據指定數量的任務副本分配任務給worker節點
swarm的使用綱要
docker swarm:集群管理,子命令有init, join, leave, update,(docker swarm --help查看幫助)
docker service:服務創建,子命令有create, inspect, update, remove, tasks,(docker service--help查看幫助)
docker node:節點管理,子命令有accept, promote, demote, inspect, update, tasks, ls, rm,(docker node --help查看幫助)
node是加入到swarm集群中的一個docker引擎物體,可以在一臺物理機上運行多個node,node分為:
manager node --> 也就是管理節點
worker nodes --> 也就是作業節點
①manager node(管理節點):執行集群的管理功能,維護集群的狀態,選舉一個leader節點去執行調度任務,
②worker node(作業節點):接收和執行任務,參與容器集群負載調度,僅用于承載task,
③service(服務):一個服務是作業節點上執行任務的定義,創建一個服務,指定了容器所使用的鏡像和容器運行的命令,service是運行在worker nodes上的task的描述,service的描述包括使用哪個docker 鏡像,以及在使用該鏡像的容器中執行什么命令,
④task(任務):一個任務包含了一個容器及其運行的命令,task是service的執行物體,task啟動docker容器并在容器中執行任務,
swarm的使用
1.部署機器環境(四臺機器,CentOS8與Ubuntu系統)
IP:192.168.232.132 主機名:docker-manager-1 擔任角色:swarm manager
IP:192.168.232.133 主機名:docker-2 擔任角色:swarm node1
IP:192.168.232.134 主機名:docker-3 擔任角色:swarm node2
IP:192.168.232.131 主機(ubuntu)名:chaochao 擔任角色:swarm node3
2.配置hosts檔案
swarm manager:
[root@docker-manager-1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.232.132 manager
192.168.232.133 worker1
192.168.232.134 worker2
192.168.232.131 worker3
[root@docker-manager-1 ~]# ^C
另外三臺worker node操作一致
3.設定防火墻
關閉四臺機器上的防火墻,
如果是開啟防火墻,則需要在所有節點的防火墻上依次放行2377/tcp(管理埠)、7946/udp(節點間通信埠)、4789/udp(overlay 網路埠,容器之間)埠,
[root@docker-manager-1 ~]# systemctl disable firewalld
[root@docker-manager-1 ~]#
[root@docker-2 ~]# systemctl disable firewalld
[root@docker-2 ~]#
另外兩臺操作一致,
4.重啟docker服務,防止導致網路例外
[root@docker-manager-1 ~]# service docker restart
Redirecting to /bin/systemctl restart docker.service
[root@docker-manager-1 ~]#
[root@docker-2 ~]# service docker restart
Redirecting to /bin/systemctl restart docker.service
[root@docker-2 ~]#
[root@docker-3 ~]# service docker restart
Redirecting to /bin/systemctl restart docker.service
[root@docker-3 ~]#
root@chaochao:~# service docker restart
root@chaochao:~#
5.創建swarm集群
對于manager:
# 命令:docker swarm init --advertise-addr manager的IP地址
[root@docker-manager-1 ~]# docker swarm init --advertise-addr 192.168.232.132
Swarm initialized: current node (ooauma1x037wufqkh21uj0j7v) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
[root@docker-manager-1 ~]#
對于三臺swarm nodes
輸入manager創建的命令: docker swarm join --token ……,此命令在manager創建swarm時會自動生成,
[root@docker-2 ~]# docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377
This node joined a swarm as a worker.
[root@docker-2 ~]#
[root@docker-3 ~]# docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377
This node joined a swarm as a worker.
[root@docker-3 ~]#
root@chaochao:~# docker swarm join --token SWMTKN-1-0200k3nv43fmc6hcuurx8z1iehsqq6uro12qjfeoxrkmk9fmom-1ub4wsmlpl4zhqalzdrgukx3l 192.168.232.132:2377
This node joined a swarm as a worker.
root@chaochao:~#
Tips:
退出swarm集群的命令:docker swarm leave
對于manager,解散集群需要加上--force:docker swarm leave --force
6.查看集群的相關資訊
[root@docker-manager-1 ~]# docker info
…….
Server:
Containers: 33
Running: 2
Paused: 0
Stopped: 31
Images: 61
Server Version: 20.10.8
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
……
#上面的命令執行后 找到Swarm的關鍵字,就可以看到相關資訊了,swarm manager和swarm node都可以運行此命令
[root@docker-manager-1 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
rge7nydl1tr8am0340zfxqggm chaochao Ready Active 20.10.8
svygquzhtveeenyd9y4i126tu docker-2 Ready Active 20.10.8
naer5j3rs5z4fea8cckcezpf3 docker-3 Ready Active 20.10.8
ooauma1x037wufqkh21uj0j7v * docker-manager-1 Ready Active Leader 20.10.8
[root@docker-manager-1 ~]#
#上面的命令是查看集群中的機器(注意上面node ID旁邊那個*號表示現在連接到這個節點上),只有swarm manager可以運行此命令
7.在Swarm中部署服務
在docker-manager-1上運行docker service create --replicas 10 --name helloworld alpine ping docker.com
[root@docker-manager-1 ~]# docker service create --replicas 10 --name helloworld alpine ping docker.com
l65e19mrz1ywhu8sl3zim4bet
overall progress: 10 out of 10 tasks
1/10: running [==================================================>]
2/10: running [==================================================>]
3/10: running [==================================================>]
4/10: running [==================================================>]
5/10: running [==================================================>]
6/10: running [==================================================>]
7/10: running [==================================================>]
8/10: running [==================================================>]
9/10: running [==================================================>]
10/10: running [==================================================>]
verify: Service converged
[root@docker-manager-1 ~]#
查看swarm服務:docker service ls
[root@docker-manager-1 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
l65e19mrz1yw helloworld replicated 10/10 alpine:latest
[root@docker-manager-1 ~]#
查看nginx容器運行情況(分配情況)
命令:docker ps
推薦:
manager上運行:docker service ps chao-web
[root@docker-manager-1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fd4410c3a132 alpine:latest "ping docker.com" 2 minutes ago Up 2 minutes helloworld.1.svjs7kjfdicjf7ad0xhn850kx
33beffba02d8 alpine:latest "ping docker.com" 2 minutes ago Up 2 minutes helloworld.7.tepg67357odbvi99bz8n1s2z3
2cd834cab1d2 alpine:latest "ping docker.com" 2 minutes ago Up 2 minutes
[root@docker-2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13c8d54bc217 alpine:latest "ping docker.com" 3 minutes ago Up 3 minutes helloworld.6.5emn8zu59a6gukvix2ilx7943
cd476a1148be alpine:latest "ping docker.com" 3 minutes ago Up 3 minutes helloworld.10.elvjakl7ir3p0g4b2994t797z
[root@docker-3 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5421b466442 alpine:latest "ping docker.com" 3 minutes ago Up 3 minutes helloworld.3.odr0kjnofzq11xf05jcernsca
9895ecb2e08a alpine:latest "ping docker.com" 3 minutes ago Up 3 minutes helloworld.4.gy7o9qb1mckhna10esuk6qluc
root@chaochao:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
83db926e26fc alpine:latest "ping docker.com" 4 minutes ago Up 3 minutes helloworld.5.wmqr3orrxyd9jl5n2qfm5rfxp
9648166b579d alpine:latest "ping docker.com" 4 minutes ago Up 3 minutes helloworld.8.q4kr2i2kz7qkjtqu5fav0cmy0
6cc0ad2cc251 alpine:latest "ping docker.com" 4 minutes ago Up 3 minutes helloworld.9.v1ctfiho9nojzps4ycdi8xemf
root@chaochao:~#
添加、減少副本任務
增加命令1 docker service update --replicas 20 helloworld
[root@docker-manager-1 ~]# docker service update --replicas 20 helloworld
helloworld
overall progress: 20 out of 20 tasks
1/20: running [==================================================>]
2/20: running [==================================================>]
3/20: running [==================================================>]
4/20: running [==================================================>]
5/20: running [==================================================>]
6/20: running [==================================================>]
7/20: running [==================================================>]
8/20: running [==================================================>]
9/20: running [==================================================>]
10/20: running [==================================================>]
11/20: running [==================================================>]
12/20: running [==================================================>]
13/20: running [==================================================>]
14/20: running [==================================================>]
15/20: running [==================================================>]
16/20: running [==================================================>]
17/20: running [==================================================>]
18/20: running [==================================================>]
19/20: running [==================================================>]
20/20: running [==================================================>]
verify: Service converged
[root@docker-manager-1 ~]#
增加和減少通用命令: docker service scale helloworld=5
[root@docker-manager-1 ~]# docker service scale helloworld=5
helloworld scaled to 5
overall progress: 5 out of 5 tasks
1/5: running [==================================================>]
2/5: running [==================================================>]
3/5: running [==================================================>]
4/5: running [==================================================>]
5/5: running [==================================================>]
verify: Service converged
[root@docker-manager-1 ~]#
[root@docker-manager-1 ~]# docker service scale helloworld=15
helloworld scaled to 15
overall progress: 15 out of 15 tasks
1/15: running [==================================================>]
2/15: running [==================================================>]
3/15: running [==================================================>]
4/15: running [==================================================>]
5/15: running [==================================================>]
6/15: running [==================================================>]
7/15: running [==================================================>]
8/15: running [==================================================>]
9/15: running [==================================================>]
10/15: running [==================================================>]
11/15: running [==================================================>]
12/15: running [==================================================>]
13/15: running [==================================================>]
14/15: running [==================================================>]
15/15: running [==================================================>]
verify: Service converged
[root@docker-manager-1 ~]#
swarm的其他命令
1.洗掉節點,命令:docker node rm --force 節點名"
2.更改節點的狀態
swarm集群中node的availability狀態可以為active或者drain:
active狀態下,node可以接受來自manager節點的任務分派
drain狀態下,node節點會結束task,且不再接受來自manager節點的任務分派(也就是節點離線)
命令: docker node update --availability 狀態 節點名
[root@docker-manager-1 ~]# docker node update --availability drain docker-3
# 將docker-3節點離線,
# 再次修改為active狀態(將離線的節點再次上線)
[root@docker-manager-1 ~]# docker node update --availability active docker-3
swarm集群部署web服務
1.創建服務
命令:docker service create --replicas 任務數量 --name 服務名 -p 8020:80(設定埠影響) nginx(鏡像名)
[root@docker-manager-1 ~]# docker service create --replicas 10 --name chao-web -p 8020:80 nginx
5h4b8hlq5mvkh1gkda71b7z8o
overall progress: 10 out of 10 tasks
1/10: running [==================================================>]
2/10: running [==================================================>]
3/10: running [==================================================>]
4/10: running [==================================================>]
5/10: running [==================================================>]
6/10: running [==================================================>]
7/10: running [==================================================>]
8/10: running [==================================================>]
9/10: running [==================================================>]
10/10: running [==================================================>]
verify: Service converged
[root@docker-manager-1 ~]#
2.查看集群服務分配情況
命令:docker service ps chao-web
[root@docker-manager-1 ~]# docker service ps chao-web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
wp1rdbn4ocyi chao-web.1 nginx:latest chaochao Running Running about a minute ago
v4s3ketvbjiy chao-web.2 nginx:latest docker-3 Running Running about a minute ago
3ep775a816g0 \_ chao-web.2 nginx:latest docker-3 Shutdown Rejected 2 minutes ago "No such image: nginx:latest@s…"
kpj8esqq3ee7 chao-web.3 nginx:latest docker-2 Running Running about a minute ago
nypfltoerv7h chao-web.4 nginx:latest chaochao Running Running about a minute ago
5qukcxy6tnl3 chao-web.5 nginx:latest docker-3 Running Running about a minute ago
xot5ioknnrsy chao-web.6 nginx:latest docker-manager-1 Running Running about a minute ago
iv6r6a6buz5n chao-web.7 nginx:latest docker-2 Running Running about a minute ago
xxc1lszt5y6k chao-web.8 nginx:latest docker-3 Running Running about a minute ago
5og6286rgl70 chao-web.9 nginx:latest docker-2 Running Running about a minute ago
xcw038hy4atr chao-web.10 nginx:latest docker-manager-1 Running Running about a minute ago
[root@docker-manager-1 ~]#
3.查看創建的服務的詳細資訊
命令:docker service inspect chao-web
[root@docker-manager-1 ~]# docker service inspect chao-web
[
{
"ID": "5h4b8hlq5mvkh1gkda71b7z8o",
"Version": {
"Index": 209
},
"CreatedAt": "2021-08-23T02:16:28.984070915Z",
"UpdatedAt": "2021-08-23T02:16:28.986493133Z",
"Spec": {
"Name": "chao-web",
"Labels": {},
"TaskTemplate": {
"ContainerSpec": {
"Image": "nginx:latest@sha256:4d4d96ac750af48c6a551d757c1cbfc071692309b491b70b2b8976e102dd3fef",
"Init": false,
"StopGracePeriod": 10000000000,
"DNSConfig": {},
"Isolation": "default"
……..
4.查看服務是否創建成功
訪問:https://localhost:埠號




思考:swarm manager 是通過什么方式和swarm node進行通信的?
2377 --> swarm manager
7946 --> swarm node
4789 --> swarm容器
manager通過埠來管理swarm節點在所有節點的防火墻上依次放行2377/tcp(管理埠)、7946/udp(節點間通信埠)、4789/udp(overlay 網路埠)埠,
[root@docker-manager-1 ~]# ss -anplut
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 0.0.0.0:4789 0.0.0.0:*
udp UNCONN 0 0 *:7946 *:* users:(("dockerd",pid=3290,fd=50))
tcp LISTEN 0 128 0.0.0.0:8000 0.0.0.0:* users:(("docker-proxy",pid=3504,fd=4))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=941,fd=4))
tcp LISTEN 0 128 [::]:8000 [::]:* users:(("docker-proxy",pid=3510,fd=4))
tcp LISTEN 0 128 *:2377 *:* users:(("dockerd",pid=3290,fd=43))
tcp LISTEN 0 128 *:7946 *:* users:(("dockerd",pid=3290,fd=48))
tcp LISTEN 0 128 *:8020 *:* users:(("dockerd",pid=3290,fd=67))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=941,fd=6))
[root@docker-manager-1 ~]#
鏡像的滾動升級操作
滾動升級
先停一個舊的nginx容器,馬上啟動一個新版本的容器,
eg:nginx:1.19.10 ---> nginx:1.21.1
①先啟動一個舊版本nginx
[root@docker-manager-1 ~]# docker service create --replicas 10 --name chao-web -p 8021:80 nginx:1.19.10
7y02cykjtrfkea7x8djvj2u4v
overall progress: 10 out of 10 tasks
1/10: running [==================================================>]
2/10: running [==================================================>]
3/10: running [==================================================>]
4/10: running [==================================================>]
5/10: running [==================================================>]
6/10: running [==================================================>]
7/10: running [==================================================>]
8/10: running [==================================================>]
9/10: running [==================================================>]
10/10: running [==================================================>]
verify: Service converged
[root@docker-manager-1 ~]#
②進行滾動升級
命令:docker service update --image nginx:latest chao-web(容器名)
[root@docker-manager-1 ~]# docker service update --image nginx:latest chao-web
image nginx:latest could not be accessed on a registry to record
its digest. Each node will access nginx:latest independently,
possibly leading to different nodes running different
versions of the image.
chao-web
overall progress: 10 out of 10 tasks
1/10: running [==================================================>]
2/10: running [==================================================>]
3/10: running [==================================================>]
4/10: running [==================================================>]
5/10: running [==================================================>]
6/10: running [==================================================>]
7/10: running [==================================================>]
8/10: running [==================================================>]
9/10: running [==================================================>]
10/10: running [==================================================>]
verify: Service converged
[root@docker-manager-1 ~]#
結合compose和swarm進行多服務的編排
compose和swarm結合有什么優勢
優勢:compose和swarm結合可以實作優勢互補,通過compose可以對一臺服務器同時啟動多個容器,而swarm可以對多臺服務器進行管理,二者結合可以實作多臺服務器的多容器啟動,
代碼實體部署
1.創建swarm目錄
[root@docker-manager-1 ~]# mkdir /lianxi/swarm
[root@docker-manager-1 ~]# cd /lianxi/swarm/
[root@docker-manager-1 swarm]# ls
[root@docker-manager-1 swarm]#
2.撰寫docker-compose.yml檔案,設定要啟動的容器的鏡像
[root@docker-manager-1 swarm]# vim docker-compose.yml
[root@docker-manager-1 swarm]# ls
docker-compose.yml
[root@docker-manager-1 swarm]# cat docker-compose.yml
version: "3"
services:
chao-nginx:
image: nginx
ports:
- 8023:80
deploy:
mode: replicated
replicas: 10
chao-redis:
image: redis
ports:
- 8024:6379
deploy:
mode: replicated
replicas: 6
[root@docker-manager-1 swarm]#
3.通過這個yml檔案部署服務
命令:docker stack deploy -c docker-compose.yml deploy_deamon
[root@docker-manager-1 swarm]# docker stack deploy -c docker-compose.yml deploy_deamon
Creating network deploy_deamon_default
Creating service deploy_deamon_chao-redis
Creating service deploy_deamon_chao-nginx
[root@docker-manager-1 swarm]#
4.查看創建的服務
[root@docker-manager-1 swarm]# docker stack ls
NAME SERVICES ORCHESTRATOR
deploy_deamon 2 Swarm
[root@docker-manager-1 swarm]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
7y02cykjtrfk chao-web replicated 10/10 nginx:latest *:8021->80/tcp
m2g64m8uhovj deploy_deamon_chao-nginx replicated 10/10 nginx:latest *:8023->80/tcp
3svlxmkhnubn deploy_deamon_chao-redis replicated 6/6 redis:latest *:8024->6379/tcp
[root@docker-manager-1 swarm]#
Swarm中使用Volume
1.創建volume
[root@docker-manager-1 chaochao]# docker volume create chao-swarm
chao-swarm
[root@docker-manager-1 chaochao]# docker volume ls
DRIVER VOLUME NAME
local chao-nginx-volume-1
local chao-swarm
local chaochao
local dcdc1c404a7f25ccbbfaa29b941b2c95645e4bce5fbba73b455e842d46aac4fe
local fc4ee6067682c0cc7e19c9367c57e8822f460c49f845ad68768e6e94786c2c8e
local lizhichao
local my_wordpress_db_data
local my_wordpress_wordpress_data
[root@docker-manager-1 chaochao]# cd /var/lib/docker/volumes/chao-swarm/_data
[root@docker-manager-1 _data]# cp /web/* .
cp:是否覆寫'./1.jpg'? y
cp:是否覆寫'./index.html'? y
cp:是否覆寫'./rep.html'? y
[root@docker-manager-1 _data]# ls
1.jpg 50x.html index.html rep.html
2.創建新的服務并掛載volume(nginx為例)
命令:docker service create --replicas 10 --mount type=volume,src=chao-swarm,dst=/usr/share/nginx/html --name chao-swarm-volume -p 8025:80 nginx
[root@docker-manager-1 _data]# docker service create --replicas 10 --mount type=volume,src=chao-swarm,dst=/usr/share/nginx/html --name chao-swarm-volume -p 8025:80 nginx
image nginx:latest could not be accessed on a registry to record
its digest. Each node will access nginx:latest independently,
possibly leading to different nodes running different
versions of the image.
kaxx41zrrwv72d5c2fqokpr6h
overall progress: 10 out of 10 tasks
1/10: running [==================================================>]
2/10: running [==================================================>]
3/10: running [==================================================>]
4/10: running [==================================================>]
5/10: running [==================================================>]
6/10: running [==================================================>]
7/10: running [==================================================>]
8/10: running [==================================================>]
9/10: running [==================================================>]
10/10: running [==================================================>]
verify: Service converged
[root@docker-manager-1 _data]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
kaxx41zrrwv7 chao-swarm-volume replicated 10/10 nginx:latest *:8025->80/tcp
7y02cykjtrfk chao-web replicated 10/10 nginx:latest *:8021->80/tcp
m2g64m8uhovj deploy_deamon_chao-nginx replicated 10/10 nginx:latest *:8023->80/tcp
3svlxmkhnubn deploy_deamon_chao-redis replicated 6/6 redis:latest *:8024->6379/tcp
[root@docker-manager-1 _data]# docker service ps chao-swarm-volume
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
jl8zorwqpwu1 chao-swarm-volume.1 nginx:latest docker-3 Running Running 32 seconds ago
qpkhrrcyeacx chao-swarm-volume.2 nginx:latest chaochao Running Running 35 seconds ago
jdmmuem72q57 chao-swarm-volume.3 nginx:latest docker-3 Running Running 33 seconds ago
rv2zplpvz82v chao-swarm-volume.4 nginx:latest docker-manager-1 Running Running 34 seconds ago
0l4switts1y8 chao-swarm-volume.5 nginx:latest chaochao Running Running 35 seconds ago
ru5thcx6afxw chao-swarm-volume.6 nginx:latest docker-manager-1 Running Running 34 seconds ago
aq2v3e4iv470 chao-swarm-volume.7 nginx:latest docker-2 Running Running 35 seconds ago
rst6zeszjs9p chao-swarm-volume.8 nginx:latest docker-2 Running Running 33 seconds ago
qtr7et4tkimr chao-swarm-volume.9 nginx:latest chaochao Running Running 36 seconds ago
z4a3uu3elgey chao-swarm-volume.10 nginx:latest docker-2 Running Running 33 seconds ago
[root@docker-manager-1 _data]#
3.查看nginx服務

問題:如何解決web服務的網頁保持一致?
通過NFS服務和volume來解決,下期講解!
創作不易,客官點個贊,評論一下吧!超超和你一起加油?😜
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/296797.html
標籤:其他
下一篇:JVM記憶體布局
