©
This document uses PHP Chinese website manual Release
此页面中描述的功能标记为试验性功能,因此,在其成为通用功能之前,可能会发生更改。注*这是修改后的码头堆叠与分布式应用束文件中的码头/码头-行政长官它已被更新,以准确反映较新的版本。
Dockerfile 可以内置到图像中,并且可以从该图像创建容器。同样,docker-compose.yml
可以将内置到分布式应用程序包中,并可以从该包创建堆栈。从这个意义上说,这个捆绑包是一个多业务可分配的图像格式。
Docker 堆栈和分布式应用程序包开始作为 Docker 1.12 和 Docker Compose 1.8 中引入的实验性功能,以及群集模式的概念以及 Engine API 中的节点和服务。Docker Engine 和 Docker Registry 都不支持 bundle 的分发,bundle
的概念并不是新版本前进的重点。
但是,现在完全支持群集模式,多服务应用程序和堆栈文件。堆栈文件是特定类型的版本3撰写文件。
如果您刚刚开始使用 Docker 并希望了解部署多服务应用程序的最佳方式,那么开始的一个好地方就是入门演练。这将向您展示如何在 Compose 文件中定义服务配置,部署应用程序并使用相关的工具和命令。
生成捆绑的最简单方法是使用docker-compose
现有的方法生成捆绑docker-compose.yml
。当然,这只是一种可行的方式,同样,这docker build
不是产生 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
注因为对堆栈和包的支持还处于试验阶段,所以需要安装一个 Docker 引擎的实验性构建才能使用它。 如果您在 Mac 或 Windows 上,请下载 “Beta通道” 版本的麦克码头或 Docker for Windows 来安装它。如果您在 Linux 上,请按照实验构建自述...
创建堆栈时,将使用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
让我们部署前面创建的堆栈:
# 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
我们可以验证正确创建了服务:
# 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.
分布式应用程序包以 JSON 格式描述。当捆绑包作为文件保存时,文件扩展名为.dab
。
一个包有两个顶级域:version
和services
。Docker 1.12 工具使用的版本是0.1
。
services
在包中是构成应用程序的服务。它们对应Service
于 1.12 Docker Engine API 中引入的新对象。
服务具有以下字段:
图像(必需)string
服务将运行的映像。应该使用完整内容哈希来引用 Docker 映像,以完全指定服务的部署工件。示例:在服务中运行的postgres@sha256:e0a230a9f5b4e1b8b03bb3e8cf7322b0e42b7838c5c87f4545edb48f5eb8f077
Command []string
命令 containers.Args []string
传递给服务的参数 containers.Env []string
环境变量。map[string]string
标签用于设置[]Port
服务上的元数据的标签。端口服务端口(由Port
(int
)和Protocol
(string
)组成。服务描述只能指定容器端口被暴露,这些端口可以根据运营商的判断映射到运行时主机上 .WorkingDir string
服务容器内的工作目录。string
用户名或 UID(格式<name|uid>[:<group|gid>]
:).Networks []string
服务容器应该连接到的网络。部署捆绑的实体应根据需要创建网络。
注::有些配置选项还不支持民建联格式,包括卷安装。
开始演练
docker 堆栈部署命令
在撰写文件中部署选项