?
This document uses PHP Chinese website manual Release
1:概況介紹
2:集裝箱
3:服務(wù)
4:成群
5:堆疊
6:部署應(yīng)用程序
安裝Docker版本1.13或更高版本。
弄到碼頭組成如上文所述第三部分先決條件...
弄到碼頭機械如上文所述第四部分先決條件...
閱讀第1部分中的方向。
學(xué)習(xí)如何在第2部分中創(chuàng)建容器。
確保您已經(jīng)發(fā)布了friendlyhello
你創(chuàng)造的形象將其推送到注冊表.我們將在這里使用這個共享的圖像。
確保你的圖像作為一個部署的容器。運行此命令,在您的信息開槽username
,repo
和tag
:docker run -p 80:80 username/repo:tag
,然后訪問http://localhost/
。
有一份你的docker-compose.yml
從第3部分手巧。
確保你安裝的機器第4部分已經(jīng)準備好了。跑docker-machine ls
來驗證這個。如果機器停止運行docker-machine start myvm1
引導(dǎo)經(jīng)理,然后是docker-machine start myvm2
啟動工人。
讓你創(chuàng)造的蜂群第4部分準備好了。跑docker-machine ssh myvm1 "docker node ls"
來驗證這個。如果群集出現(xiàn),兩個節(jié)點都將報告一個ready
現(xiàn)狀。如果沒有,請重新初始化蜂群,并按照建立你的蜂群...導(dǎo)言在第4部分,您了解了如何設(shè)置一個群集,這是一個運行Docker的機器集群,并在其中部署了一個應(yīng)用程序,容器在多臺機器上協(xié)同運行。在第5部分中,您將到達分布式應(yīng)用程序?qū)哟谓Y(jié)構(gòu)的頂端:堆疊堆棧是一組相互關(guān)聯(lián)的服務(wù),它們共享依賴關(guān)系,可以編排和縮放在一起。單個堆棧能夠定義和協(xié)調(diào)整個應(yīng)用程序%28的功能,盡管非常復(fù)雜的應(yīng)用程序可能需要使用多個堆棧%29。一些好消息是,從技術(shù)上講,從第3部分開始,您就一直在使用堆棧,那時您創(chuàng)建了一個撰寫文件并使用了docker stack deploy
但是,這是運行在單個主機上的單個服務(wù)堆棧,而這通常不是生產(chǎn)過程中發(fā)生的情況。在這里,您將學(xué)習(xí)到的知識,使多個服務(wù)相互關(guān)聯(lián),并運行在多臺機器上。你做得很好,這是你的家添加新服務(wù)并重新部署將服務(wù)添加到我們的docker-compose.yml
檔案。首先,讓我們添加一個免費的可視化服務(wù),讓我們看看我們的集群是如何調(diào)度容器的。
敞開docker-compose.yml
在編輯器中,并將其內(nèi)容替換為以下內(nèi)容。一定要更換username/repo:tag
還有你的圖像細節(jié)。
版本:“3”服務(wù):web:#替換用戶名/repo:標記與您的名稱和圖像詳細信息圖片:username/repo:標簽部署:副本:5重新啟動[醫(yī)]策略:條件:失敗資源:限制:cpu:“0.1”內(nèi)存:50m端口:-“80:80”網(wǎng)絡(luò):-webnet可視化器:圖像:dockersames/可視化器:穩(wěn)定端口:-“8080:8080”卷:-“/var/run/docker.sock:/var/run/docker.sock”部署:放置:約束:node.ole==Manager網(wǎng)絡(luò):-網(wǎng)絡(luò)網(wǎng)絡(luò):
這里唯一的新發(fā)現(xiàn)是對等服務(wù)web
,命名visualizer
.你會在這里看到兩件新的事情:volumes
鍵,使可視化器訪問主機的Docker套接字文件,并且placement
關(guān)鍵,確保該服務(wù)只在群集管理器上運行,而不是在員工身上運行。那是因為這個容器Docker創(chuàng)建的開源項目,顯示在圖表中的群集上運行的Docker服務(wù)。
稍后我們將更多地討論位置限制和卷。
復(fù)制這個新的docker-compose.yml
把文件交給蜂群經(jīng)理,myvm1
*
碼頭機scp碼頭-合成物.yml myvm 1:~
重新運行docker stack deploy
命令,所有需要更新的服務(wù)都將被更新:
$ docker-machine ssh myvm1“docker stack deploy -c docker-compose.yml getstartedlab”更新服務(wù)getstartedlab_web(id:angi1bf5e4to03qu9f93trnxm)更新服務(wù)getstartedlab_visualizer(id:l9mnwkeq2jiononb5ihz9u7a4)
看看可視化器。您visualizer
在端口8080 上運行的Compose文件中看到。通過運行獲取其中一個節(jié)點的IP地址docker-machine ls
。轉(zhuǎn)到8080端口的IP地址,您將看到可視化器正在運行:您希望管理器上運行
的單個副本visualizer
,并且5個實例web
遍布整個群集。您可以通過運行來驗證此可視化效果docker stack ps <stack>
:docker-machine ssh myvm1“docker stack ps getstartedlab”可視化器是一個獨立的服務(wù),可以在任何包含它的應(yīng)用程序中運行。它不依賴于其他任何東西。現(xiàn)在讓我們創(chuàng)建一個服務(wù)呢 有一個依賴項:Redis服務(wù)將提供一個訪問者counter.Persist dataLet再次通過相同的工作流程來添加一個Redis數(shù)據(jù)庫來存儲應(yīng)用程序數(shù)據(jù)。
保存這個新的docker-compose.yml
文件,它最終添加了Redis服務(wù)。一定要更換username/repo:tag
還有你的圖像細節(jié)。
版本:“3”服務(wù):web:#替換用戶名/repo:標記與您的名稱和圖像詳細信息圖片:username/repo:標簽部署:副本:5重新啟動[醫(yī)]策略:條件:失敗資源:限制:cpu:“0.1”內(nèi)存:50m端口:-“80:80”網(wǎng)絡(luò):-webnet可視化器:圖像:dockersames/可視化器:穩(wěn)定端口:-“8080:8080”卷:-“/var/run/docker.sock:/var/run/docker.sock”部署:放置:約束:node.ole==Manager網(wǎng)絡(luò):-webnetredis:映像:redis端口:-“6379:6379”卷:-/data:/data部署:放置:約束:node.ole==Manager網(wǎng)絡(luò):-網(wǎng)絡(luò)網(wǎng)絡(luò):
Redis在Docker圖書館有一個官方形象,并已被授予短圖片。image
名稱...redis
所以不username/repo
這里的記號。Redis端口6379已經(jīng)由Redis預(yù)先配置,以便從容器公開到主機,在我們的撰寫文件中,我們將它從主機公開給全世界。因此,如果您愿意,您可以將任何節(jié)點的IP輸入到RedisDesktopManager中,并管理這個Redis實例。
最重要的是,在redis
使數(shù)據(jù)在此堆棧的部署之間保持不變的規(guī)范:
- `redis` always runs on the manager, so it’s always using the same filesystem.- `redis` accesses an arbitrary directory in the host’s file system as `/data` inside the container, which is where Redis stores data.
這將在主機的物理文件系統(tǒng)中為Redis數(shù)據(jù)創(chuàng)建一個“真相源”。沒有這個,Redis就會將其數(shù)據(jù)存儲在/data
在容器的文件系統(tǒng)中,如果重新部署容器,它就會被清除掉。
這一真相來源有兩個組成部分:
- The placement constraint you put on the Redis service, ensuring that it always uses the same host.- The volume you created that lets the container access `./data` (on the host) as `/data` (inside the Redis container). While containers come and go, the files stored on `./data` on the specified host will persist, enabling continuity.
您已經(jīng)準備好部署新的Redis使用堆棧。
創(chuàng)建一個./data
管理器上的目錄:
$docker-機器ssh myvm 1“mkdir./data”
復(fù)制新的docker-compose.yml
與docker-machine scp
*
$docker-機器SCP碼頭-Compose.yml myvm 1:~
跑docker stack deploy
再來一次。
$docker-Machine ssh myvm 1“塢庫部署-c??繋?come.yml getstartedlab”
檢查您的節(jié)點之一的網(wǎng)頁%28例如。http://192.168.99.101
%29,您將看到訪問者計數(shù)器的結(jié)果,該計數(shù)器現(xiàn)在是實時的,并在Redis上存儲信息。
另外,檢查節(jié)點的IP地址上端口8080處的可視化器,您將看到redis
與web
和visualizer
服務(wù)。
關(guān)于第6部分
這是本頁所涵蓋內(nèi)容的終端記錄*
您了解到堆棧是相互關(guān)聯(lián)的服務(wù),所有這些服務(wù)都是協(xié)同運行的,而自本教程第三部分以來,您就一直使用堆棧。您了解到要向堆棧中添加更多服務(wù),請將它們插入撰寫文件中。最后,您了解到,通過使用位置約束和卷的組合,您可以為持久化數(shù)據(jù)創(chuàng)建一個永久的主頁,這樣當(dāng)容器被拆卸和重新部署時,應(yīng)用程序的數(shù)據(jù)就能存活下來。