?
This document uses PHP Chinese website manual Release
此頁面中描述的功能標(biāo)記為試驗(yàn)性功能,因此,在其成為通用功能之前,可能會(huì)發(fā)生更改。注*這是修改后的碼頭堆疊與分布式應(yīng)用束文件中的碼頭/碼頭-行政長官它已被更新,以準(zhǔn)確反映較新的版本。
Dockerfile 可以內(nèi)置到圖像中,并且可以從該圖像創(chuàng)建容器。同樣,docker-compose.yml
可以將內(nèi)置到分布式應(yīng)用程序包中,并可以從該包創(chuàng)建堆棧。從這個(gè)意義上說,這個(gè)捆綁包是一個(gè)多業(yè)務(wù)可分配的圖像格式。
Docker 堆棧和分布式應(yīng)用程序包開始作為 Docker 1.12 和 Docker Compose 1.8 中引入的實(shí)驗(yàn)性功能,以及群集模式的概念以及 Engine API 中的節(jié)點(diǎn)和服務(wù)。Docker Engine 和 Docker Registry 都不支持 bundle 的分發(fā),bundle
的概念并不是新版本前進(jìn)的重點(diǎn)。
但是,現(xiàn)在完全支持群集模式,多服務(wù)應(yīng)用程序和堆棧文件。堆棧文件是特定類型的版本3撰寫文件。
如果您剛剛開始使用 Docker 并希望了解部署多服務(wù)應(yīng)用程序的最佳方式,那么開始的一個(gè)好地方就是入門演練。這將向您展示如何在 Compose 文件中定義服務(wù)配置,部署應(yīng)用程序并使用相關(guān)的工具和命令。
生成捆綁的最簡單方法是使用docker-compose
現(xiàn)有的方法生成捆綁docker-compose.yml
。當(dāng)然,這只是一種可行的方式,同樣,這docker build
不是產(chǎn)生 Docker 鏡像的唯一方法。
來自docker-compose
:
$ docker-compose bundle WARNING: Unsupported key 'network_mode' in services.nsqd - ignoring WARNING: Unsupported key 'links' in services.nsqd - ignoring WARNING: Unsupported key 'volumes' in services.nsqd - ignoring[...]Wrote bundle to vossibility-stack.dab
注因?yàn)閷?duì)堆棧和包的支持還處于試驗(yàn)階段,所以需要安裝一個(gè) Docker 引擎的實(shí)驗(yàn)性構(gòu)建才能使用它。 如果您在 Mac 或 Windows 上,請(qǐng)下載 “Beta通道” 版本的麥克碼頭或 Docker for Windows 來安裝它。如果您在 Linux 上,請(qǐng)按照實(shí)驗(yàn)構(gòu)建自述...
創(chuàng)建堆棧時(shí),將使用docker deploy
指揮:
# docker deploy --help Usage: docker deploy [OPTIONS] STACK Create and update a stack Options: --file string Path to a Distributed Application Bundle file (Default: STACK.dab) --help Print usage --with-registry-auth Send registry authentication details to Swarm agents
讓我們部署前面創(chuàng)建的堆棧:
# docker deploy vossibility-stack Loading bundle from vossibility-stack.dab Creating service vossibility-stack_elasticsearch Creating service vossibility-stack_kibana Creating service vossibility-stack_logstash Creating service vossibility-stack_lookupd Creating service vossibility-stack_nsqd Creating service vossibility-stack_vossibility-collector
我們可以驗(yàn)證正確創(chuàng)建了服務(wù):
# docker service ls ID NAME REPLICAS IMAGE COMMAND 29bv0vnlm903 vossibility-stack_lookupd 1 nsqio/nsq@sha256:eeba05599f31eba418e96e71e0984c3dc96963ceb66924dd37a47bf7ce18a662 /nsqlookupd 4awt47624qwh vossibility-stack_nsqd 1 nsqio/nsq@sha256:eeba05599f31eba418e96e71e0984c3dc96963ceb66924dd37a47bf7ce18a662 /nsqd --data-path=/data --lookupd-tcp-address=lookupd:41604tjx9biia6fs vossibility-stack_elasticsearch 1 elasticsearch@sha256:12ac7c6af55d001f71800b83ba91a04f716e58d82e748fa6e5a7359eed2301aa 7563uuzr9eys vossibility-stack_kibana 1 kibana@sha256:6995a2d25709a62694a937b8a529ff36da92ebee74bafd7bf00e6caf6db2eb03 9gc5m4met4he vossibility-stack_logstash 1 logstash@sha256:2dc8bddd1bb4a5a34e8ebaf73749f6413c101b2edef6617f2f7713926d2141fe logstash -f /etc/logstash/conf.d/logstash.conf axqh55ipl40h vossibility-stack_vossibility-collector 1 icecrime/vossibility-collector@sha256:f03f2977203ba6253988c18d04061c5ec7aab46bca9dfd89a9a1fa4500989fba --config /config/config.toml --debug
堆棧使用docker stack
指揮:
# docker stack --help Usage: docker stack COMMAND Manage Docker stacks Options: --help Print usage Commands: config Print the stack configuration deploy Create and update a stack rm Remove the stack services List the services in the stack tasks List the tasks in the stack Run 'docker stack COMMAND --help' for more information on a command.
分布式應(yīng)用程序包以 JSON 格式描述。當(dāng)捆綁包作為文件保存時(shí),文件擴(kuò)展名為.dab
。
一個(gè)包有兩個(gè)頂級(jí)域:version
和services
。Docker 1.12 工具使用的版本是0.1
。
services
在包中是構(gòu)成應(yīng)用程序的服務(wù)。它們對(duì)應(yīng)Service
于 1.12 Docker Engine API 中引入的新對(duì)象。
服務(wù)具有以下字段:
圖像(必需)string
服務(wù)將運(yùn)行的映像。應(yīng)該使用完整內(nèi)容哈希來引用 Docker 映像,以完全指定服務(wù)的部署工件。示例:在服務(wù)中運(yùn)行的postgres@sha256:e0a230a9f5b4e1b8b03bb3e8cf7322b0e42b7838c5c87f4545edb48f5eb8f077
Command []string
命令 containers.Args []string
傳遞給服務(wù)的參數(shù) containers.Env []string
環(huán)境變量。map[string]string
標(biāo)簽用于設(shè)置[]Port
服務(wù)上的元數(shù)據(jù)的標(biāo)簽。端口服務(wù)端口(由Port
(int
)和Protocol
(string
)組成。服務(wù)描述只能指定容器端口被暴露,這些端口可以根據(jù)運(yùn)營商的判斷映射到運(yùn)行時(shí)主機(jī)上 .WorkingDir string
服務(wù)容器內(nèi)的工作目錄。string
用戶名或 UID(格式<name|uid>[:<group|gid>]
:).Networks []string
服務(wù)容器應(yīng)該連接到的網(wǎng)絡(luò)。部署捆綁的實(shí)體應(yīng)根據(jù)需要?jiǎng)?chuàng)建網(wǎng)絡(luò)。
注::有些配置選項(xiàng)還不支持民建聯(lián)格式,包括卷安裝。
開始演練
docker 堆棧部署命令
在撰寫文件中部署選項(xiàng)