Docker官方文檔翻譯5

      網(wǎng)友投稿 685 2022-05-29

      堆棧(Stacks)

      準(zhǔn)備工作

      安裝docker 1.13及以上版本

      安裝Docker Compose正如第三部分的準(zhǔn)備工作。

      安裝Docker Machine正如第四部分的準(zhǔn)備工作。

      閱讀第一部分的引導(dǎo)。

      學(xué)習(xí)怎么在第二部分創(chuàng)建容器。

      確保你已經(jīng)發(fā)布friendlyhello 鏡像,并推送到公共倉(cāng)庫(kù)。我們需要在這一部分用到這個(gè)鏡像。

      確保你的鏡像能夠成為一個(gè)被部署的容器能正常工作。

      從第三篇文章拷貝一份docker-compose.yml

      確保第四部分的docker machine已經(jīng)正確安裝,通過docker-machine ls查看。

      確保docker swarm正確安裝,并且運(yùn)行。通過執(zhí)行docker-machine ssh myvm1 “docker node ls 命令驗(yàn)證。

      介紹

      在第4部分中,你學(xué)習(xí)了如何設(shè)置一個(gè)swarm,這是一群運(yùn)行Docker的機(jī)器,并為其部署了一個(gè)應(yīng)用程序,應(yīng)用才能修包含的眾多容器在多臺(tái)機(jī)器上運(yùn)行。

      在第5部分中,你將學(xué)習(xí)分布式應(yīng)用程序?qū)哟谓Y(jié)構(gòu)的頂部:堆棧。 堆棧是一組相互關(guān)聯(lián)的服務(wù),它們可以共享依賴關(guān)系,并且可以進(jìn)行協(xié)調(diào)和伸縮。 單個(gè)堆棧能夠定義和協(xié)調(diào)整個(gè)應(yīng)用程序的功能(盡管非常復(fù)雜的應(yīng)用程序可能需要使用多個(gè)堆棧)。

      好消息是,從第3部分開始,在創(chuàng)建Compose文件并使用Docker堆棧部署時(shí),從技術(shù)上講,你一直在使用堆棧。 但是,這是在單個(gè)主機(jī)上運(yùn)行的單個(gè)服務(wù)堆棧,通常不會(huì)發(fā)生在生產(chǎn)環(huán)境中。 在這里,你可以把你學(xué)到的東西,使多個(gè)服務(wù)相互關(guān)聯(lián),并在多臺(tái)機(jī)器上運(yùn)行它們。

      你做得很好,這就是主場(chǎng)!

      添加一個(gè)新服務(wù)和重新部署

      添加服務(wù)到docker-compose文件是非常簡(jiǎn)單的。首先,添加一個(gè)可視化界面的服務(wù),可以讓我們查看swarm正在調(diào)度的容器。

      1.打開docker-compose文件,并將以下的內(nèi)容替換成文件的內(nèi)容。確保用你的鏡像信息替換username/repo:tag 的內(nèi)容。

      version:?"3" services: ??web: ????#?replace?username/repo:tag?with?your?name?and?image?details ????image:?username/repo:tag ????deploy: ??????replicas:?5 ??????restart_policy: ????????condition:?on-failure ??????resources: ????????limits: ??????????cpus:?"0.1" ??????????memory:?50M ????ports: ??????-?"80:80" ????networks: ??????-?webnet ??visualizer: ????image:?dockersamples/visualizer:stable ????ports: ??????-?"8080:8080" ????volumes: ??????-?"/var/run/docker.sock:/var/run/docker.sock" ????deploy: ??????placement: ????????constraints:?[node.role?==?manager] ????networks: ??????-?webnet networks: ??webnet:

      我們稍后會(huì)詳細(xì)討論lacement constraints 和volumes 。

      2.確保你的shell被配置為與myvm1進(jìn)行通信(完整的例子在這如下)。

      運(yùn)行docker-machine ls列出機(jī)器,并確保您已連接到myvm1,如旁邊的星號(hào)所示。

      如果需要,重新運(yùn)行docker-machine env myvm1,然后運(yùn)行給定的命令來配置shell。

      在Mac或Linux上,命令是:

      eval?$(docker-machine?env?myvm1)

      3.在manager上重新運(yùn)行docker stack deploy命令,并且需要更新的任何服務(wù)都會(huì)更新:

      $?docker?stack?deploy?-c?docker-compose.yml?getstartedlab Updating?service?getstartedlab_web?(id:?angi1bf5e4to03qu9f93trnxm) Creating?service?getstartedlab_visualizer?(id:?l9mnwkeq2jiononb5ihz9u7a4)

      查看可視化界面

      你在Compose文件中看到,可視化工具在端口8080上運(yùn)行。通過運(yùn)行docker-machine ls來獲取其中一個(gè)節(jié)點(diǎn)的IP地址。 轉(zhuǎn)到8080端口的IP地址,您可以看到可視化器正在運(yùn)行:

      可視化器的單個(gè)副本按照預(yù)期在manager上運(yùn)行,并且網(wǎng)絡(luò)的5個(gè)實(shí)例遍布整個(gè)群集。 你可以通過運(yùn)行docker stack ps來確認(rèn)此可視化:

      docker?stack?ps?getstartedlab

      可視化器是一個(gè)獨(dú)立的服務(wù),可以在包含它的任何應(yīng)用程序中運(yùn)行。 它不依賴于其他任何東西。現(xiàn)在讓我們創(chuàng)建一個(gè)具有依賴性的服務(wù):提供訪問者計(jì)數(shù)器的Redis服務(wù)。

      數(shù)據(jù)持久化

      讓我們?cè)俅瓮ㄟ^相同的工作流程來添加用于存儲(chǔ)應(yīng)用程序數(shù)據(jù)的Redis數(shù)據(jù)庫(kù)。

      保存這份新的docker-compose.yml文件,它最后添加了一個(gè)redis服務(wù)。確保用的鏡像信息替換掉username/repo:tag的內(nèi)容。

      version:?"3" services: ??web: ????#?replace?username/repo:tag?with?your?name?and?image?details ????image:?username/repo:tag ????deploy: ??????replicas:?5 ??????restart_policy: ????????condition:?on-failure ??????resources: ????????limits: ??????????cpus:?"0.1" ??????????memory:?50M ????ports: ??????-?"80:80" ????networks: ??????-?webnet ??visualizer: ????image:?dockersamples/visualizer:stable ????ports: ??????-?"8080:8080" ????volumes: ??????-?"/var/run/docker.sock:/var/run/docker.sock" ????deploy: ??????placement: ????????constraints:?[node.role?==?manager] ????networks: ??????-?webnet ??redis: ????image:?redis ????ports: ??????-?"6379:6379" ????volumes: ??????-?"/home/docker/data:/data" ????deploy: ??????placement: ????????constraints:?[node.role?==?manager] ????command:?redis-server?--appendonly?yes ????networks: ??????-?webnet networks: ??webnet:

      Redis在Docker庫(kù)中有一個(gè)正式鏡像,并且已被授予redis的簡(jiǎn)短鏡像名稱,所以在這里沒有username/repo符號(hào)。 Redis端口6379已經(jīng)由Redis預(yù)先配置為從容器暴露給主機(jī),并且在我們的Compose文件中,我們將它從主機(jī)展示給所有容器,因此你可以實(shí)際輸入任何IP的IP 節(jié)點(diǎn)添加到Redis桌面管理器中并管理此Redis實(shí)例,如果愿意的話。

      最重要的是,redis規(guī)范中有幾件事情使數(shù)據(jù)在這個(gè)堆棧的部署之間持久化:

      redis總是在管理器上運(yùn)行,所以它總是使用相同的文件系統(tǒng)。

      redis在主機(jī)文件系統(tǒng)中訪問任意目錄作為容器內(nèi)的/ data,這是Redis存儲(chǔ)數(shù)據(jù)的地方。

      這就是在主機(jī)物理文件系統(tǒng)中為Redis數(shù)據(jù)創(chuàng)建“source of truth”。 如果沒有這個(gè),Redis會(huì)將其數(shù)據(jù)存儲(chǔ)在容器文件系統(tǒng)中的/ data中,如果該容器曾經(jīng)被重新部署,該數(shù)據(jù)將被清除。

      真實(shí)的數(shù)據(jù)源(source of truth)由2部分組成:

      Docker官方文檔翻譯5

      放置在Redis服務(wù)上的 placement constraint,確保它始終使用相同的主機(jī)。

      創(chuàng)建的volume ,允許容器作為/ data(位于Redis容器內(nèi))訪問./data(在主機(jī)上)。 在容器重復(fù)開啟和關(guān)閉時(shí),存儲(chǔ)在指定主機(jī)上的./data文件仍然存在,從而保持連續(xù)性。

      2.在manager上創(chuàng)建一個(gè)./data目錄

      docker-machine?ssh?myvm1?"mkdir?./data"

      3.確保你的shell被配置為與myvm1進(jìn)行通信(完整的例子在這里)。

      運(yùn)行docker-machine ls命令,列出所有的機(jī)器和確保你已經(jīng)連上myvm1。

      如果需要,重新運(yùn)行docker-machine env myvm1命令,然后再運(yùn)行以下命令:

      eval?$(docker-machine?env?myvm1)

      運(yùn)行docker stack deploy命令

      $?docker?stack?deploy?-c?docker-compose.yml?getstartedlab

      5.運(yùn)行docker service ls命令,去驗(yàn)證這三個(gè)服務(wù)跟預(yù)期一樣正常運(yùn)行。

      $?docker?service?ls ID??????????????????NAME???????????????????????MODE????????????????REPLICAS????????????IMAGE?????????????????????????????PORTS x7uij6xb4foj????????getstartedlab_redis????????replicated??????????1/1?????????????????redis:latest??????????????????????*:6379->6379/tcp n5rvhm52ykq7????????getstartedlab_visualizer???replicated??????????1/1?????????????????dockersamples/visualizer:stable???*:8080->8080/tcp mifd433bti1d????????getstartedlab_web??????????replicated??????????5/5?????????????????orangesnap/getstarted:latest????*:80->80/tcp

      6.查看你的機(jī)器的一個(gè)節(jié)點(diǎn)的web頁面,比如http://192.168.99.101,并且查看訪客計(jì)數(shù)的結(jié)果,該計(jì)數(shù)現(xiàn)在已經(jīng)存在并將信息存儲(chǔ)在Redis上。

      另外,請(qǐng)檢查任一節(jié)點(diǎn)IP地址的端口8080處的可視化工具,并注意查看隨Web和可視化工具一起運(yùn)行的redis服務(wù)。

      https://mp.weixin.qq.com/s?__biz=MzAxNjk4ODE4OQ==&mid=2247484236&idx=1&sn=8e59e98150053a97c01946c68833a6e3&chksm=9bed223eac9aab28d20d3cf489e5c9a51f6acee8c3d1c6dbf664313c940ebbd140f7d6789f31&scene=21#wechat_redirect

      機(jī)器翻譯 TCP/IP Docker

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:DAOS 分布式異步對(duì)象存儲(chǔ)|控制平面
      下一篇:[跟著官方文檔學(xué)Selenium][學(xué)習(xí)筆記][四][WebDriver的功能]
      相關(guān)文章
      亚洲欧洲久久精品| 亚洲精品国产福利一二区| 精品久久久久亚洲| 中文字幕乱码亚洲精品一区| 久久久无码精品亚洲日韩按摩| 亚洲国产一区在线观看| 亚洲第一页在线播放| 久久国产亚洲高清观看| 亚洲精品不卡视频| 亚洲美女aⅴ久久久91| 亚洲精品在线不卡| 久久99亚洲网美利坚合众国| 亚洲国产精品lv| 亚洲五月激情综合图片区| 久久亚洲私人国产精品vA | 国产亚洲色婷婷久久99精品| 国产亚洲精品久久久久秋霞| 亚洲精品乱码久久久久久按摩 | 亚洲成人激情小说| 亚洲日本VA中文字幕久久道具| 亚洲色欲色欱wwW在线| 337p日本欧洲亚洲大胆人人| 一区国严二区亚洲三区| 亚洲伊人久久综合中文成人网| 亚洲五月午夜免费在线视频| 在线精品亚洲一区二区小说| 亚洲va久久久噜噜噜久久| 亚洲av日韩av高潮潮喷无码| 亚洲精品视频专区| 亚洲专区中文字幕| 一本天堂ⅴ无码亚洲道久久| 亚洲欧美成aⅴ人在线观看| 亚洲JLZZJLZZ少妇| 亚洲欧美在线x视频| 亚洲AV无码乱码在线观看性色扶| 亚洲伊人久久成综合人影院| 亚洲AV日韩AV永久无码免下载| 亚洲网站在线播放| 亚洲中文无码mv| 亚洲精品老司机在线观看| 国产aⅴ无码专区亚洲av|