一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機(jī)|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識(shí)|Nginx|IIS|Tomcat|

服務(wù)器之家 - 服務(wù)器技術(shù) - 服務(wù)器知識(shí) - 在Ubuntu 16.04上用Docker Swarm和DigitalOcean創(chuàng)建一個(gè)Docker容器集群的方法

在Ubuntu 16.04上用Docker Swarm和DigitalOcean創(chuàng)建一個(gè)Docker容器集群的方法

2021-01-08 17:08howtoing 服務(wù)器知識(shí)

這篇文章主要介紹了在Ubuntu 16.04上用Docker Swarm和DigitalOcean創(chuàng)建一個(gè)Docker容器集群的方法,需要的的朋友參考下吧

介紹

Docker Swarm是用于部署Docker主機(jī)集群的Docker本地解決方案。您可以使用它來快速部署在本地計(jì)算機(jī)或受支持的云平臺(tái)上運(yùn)行的Docker主機(jī)集群。

在Docker 1.12之前,設(shè)置和部署Docker主機(jī)集群需要使用外部鍵值存儲(chǔ)(如etcdConsul)來進(jìn)行服務(wù)發(fā)現(xiàn)。但是,使用Docker 1.12,不再需要外部發(fā)現(xiàn)服務(wù),因?yàn)镈ocker提供了一個(gè)內(nèi)置的鍵值存儲(chǔ),可以開箱即用。

在本教程中,您將了解如何使用Docker 1.12上的Swarm功能部署一組Docker機(jī)器。集群中的每個(gè)Docker節(jié)點(diǎn)將運(yùn)行Ubuntu 16.04。雖然您可以運(yùn)行由數(shù)十,數(shù)百或數(shù)千個(gè)Docker主機(jī)組成的群集,但我們將在本教程中設(shè)置的群集將由一個(gè)管理器節(jié)點(diǎn)和兩個(gè)工作節(jié)點(diǎn)組成,共有三個(gè)群集成員。完成本教程后,您可以輕松地向集群中添加更多節(jié)點(diǎn)。

先決條件

對(duì)于本教程,您需要:

安裝了Docker的本地機(jī)器。您的本地計(jì)算機(jī)可以運(yùn)行任何Linux發(fā)行版,甚至Windows或macOS。對(duì)于Windows和macOS,使用官方安裝程序安裝Docker。 如果您的本地計(jì)算機(jī)上運(yùn)行了Ubuntu 16.04,但未安裝Docker ,請(qǐng)參閱如何在Ubuntu 16.04上安裝和使用Docker以獲取相關(guān)說明。

DigitalOcean API令牌。如果沒有,使用本指南生成它。生成令牌時(shí),請(qǐng)確保它具有讀寫范圍。這是默認(rèn)值,因此如果您在生成它時(shí)不更改任何選項(xiàng),它將具有讀寫能力。為了更容易在命令行中使用,請(qǐng)務(wù)必將令牌分配給該文章中給出的變量。

Docker Machine安裝在本地計(jì)算機(jī)上,您將使用它來創(chuàng)建三臺(tái)主機(jī)。 在Windows和macOS上,Docker安裝包括Docker Machine。

第1步 – 配置群集節(jié)點(diǎn)

我們需要為集群創(chuàng)建幾個(gè)Docker主機(jī)。 作為刷新程序,以下命令提供單個(gè)Docker化主機(jī),其中$DOTOKEN是一個(gè)環(huán)境變量,其計(jì)算結(jié)果為您的DigitalOcean API令牌:

?
1
docker-machine create --driver digitalocean --digitalocean-image ubuntu-16-04-x64 --digitalocean-access-token $DOTOKEN machine-name

想象一下,必須設(shè)置一個(gè)由至少三個(gè)節(jié)點(diǎn)組成的集群,一次配置一個(gè)主機(jī)。

我們可以使用此命令并結(jié)合一些簡(jiǎn)單的Bash腳本自動(dòng)化配置任何數(shù)量的Docker主機(jī)的過程。在本地機(jī)器上執(zhí)行此命令以創(chuàng)建三個(gè)名為node-1 , node-2和node-3 Docker主機(jī):

?
1
2
3
for i in 1 2 3; do docker-machine create --driver digitalocean \
--digitalocean-image ubuntu-16-04-x64 \
--digitalocean-access-token $DOTOKEN node-$i; done

命令成功完成后,您可以通過訪問您的DigitalOcean儀表板或輸入以下命令來驗(yàn)證是否已創(chuàng)建所有計(jì)算機(jī):

?
1
docker-machine ls

輸出應(yīng)類似于以下內(nèi)容,它應(yīng)該作為查找節(jié)點(diǎn)的IP地址的快速參考:

?
1
2
3
4
5
Output
NAME ACTIVE DRIVER  STATE URL    SWARM DOCKER ERRORS
node-1 - digitalocean Running tcp://104.236.239.4:2376  v1.12.2
node-2 - digitalocean Running tcp://104.131.165.210:2376  v1.12.2
node-3 - digitalocean Running tcp://104.236.76.250:2376  v1.12.2

此時(shí),所有三個(gè)Docker化主機(jī)已創(chuàng)建,并且您擁有每個(gè)主機(jī)的IP地址。他們也都運(yùn)行Docker 1.12.x,但是還不是Docker集群的一部分。在接下來的步驟中,我們將配置防火墻規(guī)則,使節(jié)點(diǎn)成為集群成員,選擇其中一個(gè)節(jié)點(diǎn)并將其作為Docker Swarm管理器,并將其余部分配置為Docker Swarm工作線程。

第2步 – 配置防火墻規(guī)則以允許Docker群交通

集群必須至少有一個(gè)節(jié)點(diǎn)作為管理器,但對(duì)于生產(chǎn)設(shè)置,建議使用三個(gè)管理器。對(duì)于此設(shè)置,讓我們選擇第一個(gè)節(jié)點(diǎn),并將其設(shè)置為Swarm管理器。其他兩個(gè)節(jié)點(diǎn)將是工作節(jié)點(diǎn)。

必須在將成為群集一部分的節(jié)點(diǎn)上打開某些網(wǎng)絡(luò)端口,以使群集正常工作。這需要配置防火墻以允許通過這些端口的流量。因?yàn)橛腥齻€(gè)不同的防火墻應(yīng)用程序可用于完成該任務(wù),您需要在每個(gè)防火墻應(yīng)用程序的節(jié)點(diǎn)上執(zhí)行的命令已在單獨(dú)的文章中記錄。按照本指南并為每個(gè)主機(jī)配置防火墻。打開管理器上的適當(dāng)端口,然后重復(fù)以打開兩個(gè)客戶機(jī)節(jié)點(diǎn)上的端口。

完成此步驟后,可以初始化集群管理器。

第3步 – 初始化集群管理器

我們已經(jīng)決定node-1將是我們的集群管理器,所以從本地機(jī)器登錄到節(jié)點(diǎn):

?
1
docker-machine ssh node-1

命令提示符將更改以反映您現(xiàn)在已登錄到該特定節(jié)點(diǎn)的事實(shí)。要將節(jié)點(diǎn)配置為Swarm管理器,請(qǐng)鍵入以下命令:

?
1
docker swarm init --advertise-addr node_ip_address

node_ip_address是節(jié)點(diǎn)的IP地址。 您可以從docker docker-machine ls的輸出或從DigitalOcean儀表板獲取它。

您將看到類似于以下內(nèi)容的輸出:

?
1
2
3
4
5
6
7
Output
Swarm initialized: current node (a35hhzdzf4g95w0op85tqlow1) is now a manager.
To add a worker to this swarm, run the following command:
 docker swarm join \
 --token SWMTKN-1-3k7ighcfs9352hmdfzh31t297fd8tdskg6x6oi8kpzzszznffx-6kovxm3akca2qe3uaxtu07fj3 \
 104.236.239.4:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

輸出中是節(jié)點(diǎn)的ID,在此示例中為a35hhzdzf4g95w0op85tqlow1 ,以及有關(guān)如何將其他節(jié)點(diǎn)添加到集群的指示信息。

所以現(xiàn)在你有一個(gè)經(jīng)理配置的Docker Swarm。讓我們將剩余的節(jié)點(diǎn)添加為工人。

第4步 – 將節(jié)點(diǎn)添加到集群

要完成此步驟,您可能想要打開另一個(gè)終端,現(xiàn)在離開您用于單獨(dú)登錄到Swarm管理器的終端選項(xiàng)卡或窗口。

首先,從本地機(jī)器連接到node-2 :

?
1
docker-machine ssh node-2

然后執(zhí)行此命令,其中your_swarm_token是在上一步創(chuàng)建集群時(shí)接收的令牌, manager_node_ip_address是Swarm管理器的IP:

?
1
2
3
docker swarm join \
--token your_swarm_token \
manager_node_ip_address:2377

命令成功執(zhí)行后,您將看到此響應(yīng):

?
1
2
Output
This node joined a swarm as a worker.

注銷node-2 ,然后使用node-3重復(fù)此過程以將其添加到集群。

您現(xiàn)在已將兩個(gè)工作節(jié)點(diǎn)添加到集群。如果防火墻規(guī)則配置正確,則現(xiàn)在具有正常運(yùn)行的Docker Swarm,所有節(jié)點(diǎn)都已同步。

第5步 – 管理群集

在管理器和工作節(jié)點(diǎn)分配給集群后,所有Docker Swarm管理命令必須在管理器節(jié)點(diǎn)上執(zhí)行。因此返回到您用于添加管理器的終端,并鍵入此命令以查看集群的所有成員:

?
1
docker node ls

輸出應(yīng)類似于:

?
1
2
3
4
5
Output
ID    HOSTNAME STATUS AVAILABILITY MANAGER STATUS
2qhg0krj00i4d3as2gpb0iqer node-2 Ready Active
6yqh4bjki46p5uvxdw6d53gc0 node-3 Ready Active
a35hhzdzf4g95w0op85tqlow1 * node-1 Ready Active Leader

這個(gè)輸出表明我們正在處理一個(gè)3節(jié)點(diǎn)的Docker Swarm及其節(jié)點(diǎn) – 一個(gè)經(jīng)理和兩個(gè)工人。要查看可以在管理器節(jié)點(diǎn)上運(yùn)行的其他管理命令,請(qǐng)鍵入:

?
1
docker node --help

有關(guān)集群的詳細(xì)信息,您可以在manager或workers上使用以下命令(它是一個(gè)通用的Docker命令):

?
1
docker info

輸出應(yīng)該是這種類型,并且應(yīng)該指示集群的狀態(tài)( 活動(dòng)或待決 ),集群中的節(jié)點(diǎn)數(shù)以及特定節(jié)點(diǎn)是管理者還是工作者。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Output
...
 
Network: bridge host null overlay
Swarm: active
 NodeID: a35hhzdzf4g95w0op85tqlow1
 Is Manager: true
 ClusterID: f45u0lh7ag4qsl4o56yfbls31
 Managers: 1
 Nodes: 3
 Orchestration:
 Task History Retention Limit: 5
 Raft:
 Snapshot Interval: 10000
 Heartbeat Tick: 1
 Election Tick: 3
 Dispatcher:
 Heartbeat Period: 5 seconds
 CA Configuration:
 Expiry Duration: 3 months
 Node Address: 104.236.239.4
Runtimes: runc
Default Runtime: runc
Security Options: apparmor seccomp
Kernel Version: 4.4.0-38-generic
Operating System: Ubuntu 16.04.1 LTS
OSType: linux
...

如果在工作線程節(jié)點(diǎn)上重復(fù)相同的命令, Is Manager行應(yīng)顯示為false 。

提示 :您可以隨時(shí)從群集中添加或刪除節(jié)點(diǎn)。 此外,工作節(jié)點(diǎn)可以升級(jí)為管理器,并且管理器可以轉(zhuǎn)換為工作器。

現(xiàn)在讓我們?cè)诩荷线\(yùn)行一個(gè)服務(wù)。

第6步 – 在Docker Swarm中運(yùn)行服務(wù)

現(xiàn)在你有一個(gè)Docker Swarm并運(yùn)行,讓我們運(yùn)行一個(gè)測(cè)試容器,看看管理器如何處理它。在運(yùn)行Docker Engine 1.12或更高版本的計(jì)算機(jī)上,容器使用docker docker service命令部署為服務(wù)。 和docker node命令一樣, docker service命令只能在管理器節(jié)點(diǎn)上執(zhí)行。

所以讓我們使用官方的Nginx容器圖像部署一個(gè)web服務(wù)器服務(wù):

?
1
docker service create -p 80:80 --name webserver nginx

在此命令中,我們將Nginx容器中的端口80映射到集群上的端口80 ,以便我們可以從任何位置訪問默認(rèn)的Nginx頁面。

要查看集群上運(yùn)行的服務(wù),請(qǐng)鍵入:

?
1
docker service ls

輸出應(yīng)采取此形式。 REPLICAS列顯示有多少服務(wù)實(shí)例正在運(yùn)行:

?
1
2
3
Output
ID  NAME REPLICAS IMAGE COMMAND
0ymctkanhtc1 webserver 1/1 nginx

您可以通過使用docker service ps后跟服務(wù)名稱來確定服務(wù)正在運(yùn)行的節(jié)點(diǎn)。

?
1
docker service ps webserver

輸出應(yīng)類似于以下內(nèi)容:

?
1
2
3
Output
ID    NAME  IMAGE  NODE DESIRED STATE CURRENT STATE  ERROR
39yprxsaaekuif951cl0o4wau webserver.1 nginx node-1 Running Running 7 hours ago

 在此示例中, webserver服務(wù)在node-1上運(yùn)行。 由于這是一個(gè)在默認(rèn)端口上運(yùn)行的Web服務(wù)器,您可以通過將瀏覽器指向http:// node-1_ip_address來訪問它。試一試。你會(huì)看到Nginx的默認(rèn)頁面。

借助網(wǎng)狀網(wǎng)絡(luò)的魔力,可以在集群的任何其他節(jié)點(diǎn)上訪問在節(jié)點(diǎn)上運(yùn)行的服務(wù)。例如,此Nginx服務(wù)也可以通過將瀏覽器指向集群中任何節(jié)點(diǎn)的IP地址來訪問,而不僅僅是它正在運(yùn)行的節(jié)點(diǎn)的IP地址。試一試。

Docker Swarm的另一個(gè)功能是縮放服務(wù)的能力,即啟動(dòng)服務(wù)的其他實(shí)例。假設(shè)我們想將我們之前啟動(dòng)的webserver服務(wù)擴(kuò)展為五個(gè)實(shí)例。為此,我們只需鍵入以下命令,系統(tǒng)將創(chuàng)建四個(gè)實(shí)例:

?
1
docker service scale webserver=5

并且docker docker service ps的輸出將顯示在哪些節(jié)點(diǎn)上啟動(dòng)的新實(shí)例:

?
1
2
3
4
5
6
7
Output
ID    NAME  IMAGE NODE DESIRED STATE CURRENT STATE  ERROR
39yprxsaaekuif951cl0o4wau webserver.1 nginx node-1 Running Running 8 hours ago
1er2rbrnj6ltanoe47mb653wf webserver.2 nginx node-3 Running Running 14 seconds ago
evassgyvruh256ebv5pj3bqcz webserver.3 nginx node-3 Running Running 14 seconds ago
d453agrdpgng47klbl6yfjnka webserver.4 nginx node-1 Running Running 18 seconds ago
2hsdevx178rg15gqxhzrsnmg6 webserver.5 nginx node-2 Running Running 14 seconds ago

這表明四個(gè)新實(shí)例中的兩個(gè)在node-3上啟動(dòng),一個(gè)在node-1上啟動(dòng),另一個(gè)在node-2上啟動(dòng)。

最后,如果服務(wù)關(guān)閉,如果原始節(jié)點(diǎn)不再可用,它會(huì)在同一節(jié)點(diǎn)或不同節(jié)點(diǎn)上自動(dòng)重新啟動(dòng)。

結(jié)論

你已經(jīng)看到了使用Docker Engine 1.12和新的Swarm模式設(shè)置Docker Swarm有多么容易。您還了解了如何在集群上執(zhí)行幾個(gè)管理任務(wù)。但還有更多。要查看可用的Docker Swarm命令,請(qǐng)?jiān)赟warm管理器上執(zhí)行以下命令。

?
1
docker swarm --help

以上所述是小編給大家介紹的在Ubuntu 16.04上用Docker Swarm和DigitalOcean創(chuàng)建一個(gè)Docker容器集群的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

原文鏈接:http://www.howtoing.com/how-to-create-a-cluster-of-docker-containers-with-docker-swarm-and-digitalocean-on-ubuntu-16-04/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品原创永久在线观看 | 午夜人妻理论片天堂影院 | 999久久精品国产 | 欧美精品国产第一区二区 | 亚洲免费视频在线 | 亚洲国产精品嫩草影院久久 | 日产免费自线一二区 | 久久永久影院免费 | 色图图片 | 成年人在线观看免费视频 | 日本指交 | 国产精品二区高清在线 | 亚洲欧美日韩另类在线 | 午夜A级理论片左线播放 | 视频一区二区国产 | 男人懂得网站 | 国产精品成人网红女主播 | 天天做天天爱天天综合网 | h视频免费高清在线观看 | 国产精品毛片va一区二区三区 | 久久精品在现线观看免费15 | 高清不卡免费一区二区三区 | 成人在线视频观看 | 久久国产加勒比精品无码 | 成成人看片在线 | 四虎影视在线看 | 和两个男人玩3p好爽视频 | 2021国产麻豆剧传媒剧情 | 日本一级不卡一二三区免费 | ak福利午夜在线观看 | 69re在线观看| 日本xxwwwxxxx| 91视频国产精品 | freesex 18 19处xx | 欧美调教打屁股spank视频 | free嫩白的12sex性自由 | 手机看片福利 | 亚洲第99页 | 国产靠逼视频 | 色吧导航| tube日本高清老少配 |