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
。
一个包有两个顶级域: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 堆栈部署命令
- 在撰写文件中部署选项
documentation, docs, docker, compose
, bundles, stacks