在 Swarm 模式下部署应用镜像时,需要创建一个服务。服务通常代表一个较大应用中的一个微服务,例如 HTTP 服务器、数据库,或在分布式环境中需要运行的其他可执行程序。
创建服务时需指定要使用的容器镜像以及在容器内执行的命令。同时可以为服务定义若干选项,例如:
- 集群对外暴露的端口
- 覆盖网络用于服务与群内其他服务的连接
- CPU 与内存的限制与预留
- 滚动更新策略
- 在 Swarm 中运行的镜像副本数量
服务、任务与容器
当将服务部署到 Swarm 时,管理器将服务定义视为所需状态并对齐集群。集群中的节点会把服务调度为一个或多个副本任务,每个任务在群中的节点上独立运行。
例如,若要在三个 HTTP 监听器实例之间实现负载均衡,下图展示了带有三个副本的监听器服务。监听器的每个实例都是 Swarm 中的一个任务。
容器是一个独立的进程。在集群模式中,每个任务通常对应一个容器。任务可以被视为调度器放置容器的“槽位”。一旦容器处于运行状态,调度器将跟踪任务的运行情况。如果容器未通过健康检查或被终止,相关任务也将终止。
