非常教程

Docker 17参考手册

撰写 | Compose

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

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

概述

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服务上的元数据的标签。端口服务端口(由Portint)和Protocolstring)组成。服务描述只能指定容器端口被暴露,这些端口可以根据运营商的判断映射到运行时主机上 .WorkingDir string服务容器内的工作目录。string用户名或 UID(格式<name|uid>[:<group|gid>]:).Networks []string服务容器应该连接到的网络。部署捆绑的实体应根据需要创建网络。

::有些配置选项还不支持民建联格式,包括卷安装。

相关专题

  • 开始演练
  • docker 堆栈部署命令
  • 在撰写文件中部署选项

documentation, docs, docker, compose, bundles, stacks

撰写 | Compose相关

1.关于版本和升级 | About versions and upgrading (Compose)
2.ASP.NET Core + SQL Server on Linux (Compose)
3.CLI环境变量 | CLI environment variables (Compose)
4.命令行完成 | Command-line completion (Compose)
5.组成 | Compose
6.组合命令行参考 | Compose command-line reference
7.控制启动顺序 | Control startup order (Compose)
8.Django and PostgreSQL (Compose)
9.docker-compose构建 | docker-compose build
10.docker-compose 束 | docker-compose bundle
11.docker-compose配置 | docker-compose config
12.docker-compose创建 | docker-compose create
13.docker-compose down
14.docker-compose事件 | docker-compose events
15.docker-compose exec
16.docker-compose助手 | docker-compose help
17.docker-compose图像 | docker-compose images
18.docker-compose kill
19.docker-compose logs
20.docker-compose暂停 | docker-compose pause
21.docker-compose port
22.docker-compose ps
23.docker-compose pull
24.docker-compose push
25.docker-compose重启 | docker-compose restart
26.docker-compose rm
27.docker-compose运行 | docker-compose run
28.docker-compose 规模 | docker-compose scale
29.docker-compose开始 | docker-compose start
30.docker-compose结束 | docker-compose stop
31.docker-compose顶部 | docker-compose top
32.docker-compose 取消暂停 | docker-compose unpause
33.docker-compose up
34.环境文件 | Environment file (Compose)
35.Compose中的环境变量 | Environment variables in Compose
36.Compose中的扩展服务 | Extend services in Compose
37.常见问题 | Frequently asked questions (Compose)
38.开始 | Getting started (Compose)
39.安装Compose | Install Compose
40.链接环境变量(不建议使用) | Link environment variables (deprecated) (Compose)
41.Compose网络 | Networking in Compose
42.Docker Compose总览 | Overview of Docker Compose
43. docker-compose CLI总览 | Overview of docker-compose CLI
44.快速开始:Compose和WordPress | Quickstart: Compose and WordPress
45.Rails and PostgreSQL (Compose)
46.Compose的简单应用 | Sample apps with Compose
47.Compose在产品中的使用 | Using Compose in production
48.Using Compose with Swarm
49.版本1 | Version 1 (Compose)
50.版本2 | Version 2 (Compose)
51.版本3 | Version 3 (Compose)
Docker 17

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

主页 https://docker.com/
源码 https://github.com/docker/docker
版本 17
发布版本 17.06