非常教程

Docker 17参考手册

引擎 | Engine

服务如何运作(引擎) | How services work (Engine)

要在 Docker Engine 处于群集模式时部署应用程序映像,请创建一个服务。在某些更大的应用程序中,服务通常会成为微服务的图像。服务示例可能包括 HTTP 服务器,数据库或您希望在分布式环境中运行的任何其他类型的可执行程序。

在创建服务时,您可以指定要使用哪个容器映像以及要在正在运行的容器中执行哪些命令。您还可以定义该服务的选项,包括:

  • 群体将在群体外提供服务的端口
  • 该服务的覆盖网络连接到群中的其他服务
  • CPU和内存限制和保留
  • 滚动更新政策
  • 要在群中运行的图像副本的数量

服务,任务和容器

将服务部署到群集时,群集管理器接受服务定义作为服务的所需状态。然后它将该群中的节点上的服务作为一个或多个副本任务进行调度。这些任务在群中的节点上彼此独立运行。

例如,假设您想要在 HTTP 侦听器的三个实例之间进行负载平衡。下图显示了具有三个副本的 HTTP 侦听器服务。监听者的三个实例中的每一个都是群中的一个任务。

服务如何运作(引擎)  |  How services work (Engine)

容器是一个孤立的过程。在群模式模型中,每个任务只调用一个容器。任务类似于调度程序放置容器的“插槽”。一旦容器处于活动状态,调度程序就会识别出该任务处于运行状态。如果容器未通过健康检查或终止,则任务将终止。

任务和计划

任务是群体中的调度的原子单位。当您通过创建或更新服务来声明所需的服务状态时,协调器通过调度任务来实现所需的状态。例如,您可以定义一个服务,指示协调器始终保持运行 HTTP 侦听器的三个实例。协调者通过创建三个任务来做出响应。每个任务都是调度程序通过产生容器来填充的插槽。容器是任务的实例化。如果 HTTP 侦听程序任务随后失败其运行状况检查或崩溃,则该协调器会创建一个新的副本任务,以生成一个新的容器。

任务是一个单向机制。它通过一系列状态单调进行:分配,准备,运行等。如果任务失败,则协调器删除任务及其容器,然后创建一个新任务以根据服务指定的期望状态进行替换。

Docker 群集模式的基础逻辑是通用调度器和协调器。服务和任务抽象本身并不知道它们实现的容器。假设你可以实现其他类型的任务,例如虚拟机任务或非集装箱化的任务。调度程序和协调器对于任务的类型是不可知的。但是,当前版本的 Docker 仅支持容器任务。

下图显示了 swarm 模式如何接受服务创建请求并为工作节点调度任务。

服务如何运作(引擎)  |  How services work (Engine)

待定服务

服务可以被配置为使得群中当前没有节点可以运行其任务。在这种情况下,服务保持在状态pending。以下是一些服务可能保持在状态的几个示例pending

注意:如果您的唯一目的是阻止部署服务,请将服务扩展为0而不是尝试将其配置为保留在服务中pending

  • 如果所有节点都处于暂停或耗尽状态,并且您创建了一个服务,它将处于等待状态,直到某个节点可用。实际上,第一个可用的节点将获得所有的任务,因此在生产环境中这不是一件好事。
  • 您可以为服务保留特定数量的内存。如果群中没有节点具有所需的内存量,则该服务将保持等待状态,直到有可用节点运行其任务。如果你指定一个非常大的值,比如500 GB,那么这个任务将永远处于等待状态,除非你真的有一个可以满足它的节点。
  • 您可以对服务实施布局约束,并且在给定的时间内约束可能无法得到遵守。此行为说明您的任务的要求和配置与群体的当前状态并不紧密相关。作为群体的管理员,您声明群体的期望状态,并且经理与群体中的节点一起工作以创建该状态。您不需要微管理群集上的任务。复制和全局服务有两种类型的服务部署,即复制和全局。对于复制服务,指定要运行的相同任务的数量。例如,您决定部署一个具有三个副本的HTTP服务,每个副本服务于相同的内容。全局服务是在每个节点上运行一项任务的服务。没有预先指定的任务数量。每次将节点添加到swarm中时,编排器都将创建一个任务,并且调度程序将该任务分配给新节点。全球服务的良好候选者是监控代理,要在群集中的每个节点上运行的防病毒扫描程序或其他类型的容器。下图显示了三个服务的黄色副本和灰色的全局服务。

服务如何运作(引擎)  |  How services work (Engine)

了解更多

  • 了解群集模式节点如何工作。
  • 了解PKI如何在群集模式下工作。

码头工人,容器,集群,群集模式,节点

引擎 | Engine相关

1..NET核心应用程序(引擎) | .NET Core application (Engine)
2.关于图像,容器和存储驱动程序(引擎) | About images, containers, and storage drivers (Engine)
3.向swarm添加节点(Engine) | Add nodes to the swarm (Engine)
4.应用自定义元数据(引擎) | Apply custom metadata (Engine)
5.应用滚动更新(引擎) | Apply rolling updates (Engine)
6.apt-cacher-ng
7.编写Dockerfiles(引擎)的最佳实践 | Best practices for writing Dockerfiles (Engine)
8.二进制(引擎) | Binaries (Engine)
9.将容器端口绑定到主机(引擎) | Bind container ports to the host (Engine)
10.突破性变化(引擎) | Breaking changes (Engine)
11.建立自己的网桥 | Build your own bridge (Engine)
12.CentOS (Engine)
13.CentOS (Engine)
14.配置容器DNS(引擎) | Configure container DNS (Engine)
15.在用户定义的网络中配置容器DNS(引擎) | Configure container DNS in user-defined networks (Engine)
16.CouchDB (Engine)
17.创建基本映像(引擎) | Create a base image (Engine)
18.创建群(引擎) | Create a swarm (Engine)
19.自定义docker0网桥(引擎) | Customize the docker0 bridge (Engine)
20.Debian (Engine)
21.默认桥接网络 | Default bridge network
22.删除服务(引擎) | Delete the service (Engine)
23.部署服务(引擎) | Deploy a service (Engine)
24.将服务部署到一个群(引擎) | Deploy services to a swarm (Engine)
25.不推荐的引擎功能 | Deprecated Engine features
26.Docker容器网络(引擎) | Docker container networking (Engine)
27.Docker概述(引擎) | Docker overview (Engine)
28.Docker运行参考(引擎) | Docker run reference (Engine)
29.Dockerfile引用(引擎) | Dockerfile reference (Engine)
30.Dockerize应用程序 | Dockerize an application
31.排空节点(引擎) | Drain a node (Engine)
32.引擎 | Engine
33.FAQ(引擎) | FAQ (Engine)
34.Fedora (Engine)
35.开始 | Get started (Engine)
36.开始使用macvlan网络驱动程序 | Get started with macvlan network driver (Engine)
37.开始使用多主机网络 | Get started with multi-host networking (Engine)
38.节点如何工作 | How nodes work (Engine)
39.图像管理 | Image management (Engine)
40.检查服务(引擎) | Inspect the service (Engine)
41.安装Docker(引擎) | Install Docker (Engine)
42.IPv6与Docker(引擎) | IPv6 with Docker (Engine)
43.将节点加入群集(引擎) | Join nodes to a swarm (Engine)
44.旧容器链接(引擎) | Legacy container links (Engine)
45.锁定你的群(引擎) | Lock your swarm (Engine)
46.管理群中的节点(引擎) | Manage nodes in a swarm (Engine)
47.使用Docker机密管理敏感数据(引擎) | Manage sensitive data with Docker secrets (Engine)
48.使用PKI管理swarm安全性(引擎) | Manage swarm security with PKI (Engine)
49.管理群体服务网络(引擎) | Manage swarm service networks (Engine)
50.迁移到引擎1.10 | Migrate to Engine 1.10
51.可选的Linux安装后步骤(引擎) | Optional Linux post-installation steps (Engine)
52.总览 | Overview (Engine)
53.总览 | Overview (Engine)
54.PostgreSQL(引擎) | PostgreSQL (Engine)
55.群集模式中的筏共识(引擎) | Raft consensus in swarm mode (Engine)
56.Riak (Engine)
57.以群集模式运行Docker Engine | Run Docker Engine in swarm mode
58.扩展服务(引擎) | Scale the service (Engine)
59.SDKs (Engine)
60.选择一个存储驱动 | Select a storage driver (Engine)
61.设置教程(引擎) | Set up for the tutorial (Engine)
62.SSHd (Engine)
63.存储驱动总览 | Storage driver overview (Engine)
64.存储服务配置数据(引擎) | Store service configuration data (Engine)
65.Swarm管理指南(引擎) | Swarm administration guide (Engine)
66.Swarm模式关键概念(引擎) | Swarm mode key concepts (Engine)
67.Swarm模式覆盖网络安全模型(引擎) | Swarm mode overlay network security model (Engine)
68.群模式概述(引擎) | Swarm mode overview (Engine)
69.Ubuntu (Engine)
70.Ubuntu (Engine)
71.了解容器通信(引擎) | Understand container communication (Engine)
72.使用多阶段构建(引擎) | Use multi-stage builds (Engine)
73.使用swarm模式路由网格(引擎) | Use swarm mode routing mesh (Engine)
74.使用AUFS存储驱动程序(引擎) | Use the AUFS storage driver (Engine)
75.使用Btrfs存储驱动程序(引擎) | Use the Btrfs storage driver (Engine)
76.使用设备映射器存储驱动程序(引擎) | Use the Device mapper storage driver (Engine)
77.使用OverlayFS存储驱动程序(引擎) | Use the OverlayFS storage driver (Engine)
78.使用VFS存储驱动程序(引擎) | Use the VFS storage driver (Engine)
79.使用ZFS存储驱动程序(引擎) | Use the ZFS storage driver (Engine)
80.处理图像 | Work with images
81.使用网络命令(引擎) | Work with network commands (Engine)
Docker 17

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

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