在线文档教程
Docker 17
撰写 | Compose

Docker堆栈和分布式应用程序包 | Docker stacks and distributed application bundles (Compose)

Docker 堆栈和分布式应用程序包(实验)

此页面中描述的功能标记为试验性功能,因此,在其成为通用功能之前,可能会发生更改。*这是修改后的码头堆叠与分布式应用束文件中的码头/码头-行政长官它已被更新,以准确反映较新的版本。

概述

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:4160 4tjx9biia6fs 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

一个包有两个顶级域:versionservices。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 堆栈部署命令

  • 在撰写文件中部署选项

documentation, docs, docker, compose, bundles, stacks