当你在swarm mode 下,使用docker engine 部署一个应用镜像。你就是创建了一个服务。
在一些大型的应用程序中,频繁更新的服务会做成一个服务镜像来使用。
例如:
在一个分布式的环境中运行一个HTTP服务,数据库服务,还有其它可执行的程序。
当你创建一个服务,你需要定义使用哪个镜像和在容器中执行哪些命令。
你也可以定义下面的选项:(可选)
在swarm外部的可用端口
一个overlay 网络,用于连接swarm中其它的服务
CPU和内存限制、预留
滚动更新策略
在swarm中运行的容器副本数量
服务,任务和容器
当你在swarm中部署一个服务,swarm manager 会接收你所定义的服务的状态。
然后它会安排在一个或者多个容器副本节点部署你所定义的服务。
在swarm中运行的每个任务都是单独存在的。
例如:
假设你要在三个HTTP 服务中进行负载均衡。如下图所示:
在swarm中的每个实例就是一个任务。
一个容器就是一个隔离的进程。在swarm mode 模型中,每个任务使用一个容器。
当scheduler分配一个容器,一个任务就和一个slot插槽相似。一旦这个容器激活了,scheduler会识别这个任务处于runing的状态,如果这个容器启动失败,或者被停止,这个任务也随之停止。
任务和计划
在swarm集群中,一个任务就是一个原子计划。当你通过创建或者更新一个服务,来声明一个你定义的服务,编排器会自动识别计划任务的状态。
例如:
如果你要定义一个服务让编排器保持三个HTTP实例一直运行。编排器就会响应去创建三个任务。每个任务分配一个位置(即一个容器)。容器就是任务的实例化。如果HTTP监听任务健康检查失败或者崩溃了,编排器会创建一个新的任务来实例化一个新的容器。
本文出自 “清风柳絮” 博客,请务必保留此出处http://binuu.blog.51cto.com/801317/1942797
How swarm mode works_How services work
原文:http://binuu.blog.51cto.com/801317/1942797