互联网技术 / 互联网资讯 · 2024年3月8日

Docker Swarm 服务运行原理解析

在 Swarm 模式下部署应用镜像时,需要创建一个服务。服务通常代表一个较大应用中的一个微服务,例如 HTTP 服务器、数据库,或在分布式环境中需要运行的其他可执行程序。

创建服务时需指定要使用的容器镜像以及在容器内执行的命令。同时可以为服务定义若干选项,例如:

  • 集群对外暴露的端口
  • 覆盖网络用于服务与群内其他服务的连接
  • CPU 与内存的限制与预留
  • 滚动更新策略
  • 在 Swarm 中运行的镜像副本数量

服务、任务与容器

当将服务部署到 Swarm 时,管理器将服务定义视为所需状态并对齐集群。集群中的节点会把服务调度为一个或多个副本任务,每个任务在群中的节点上独立运行。

例如,若要在三个 HTTP 监听器实例之间实现负载均衡,下图展示了带有三个副本的监听器服务。监听器的每个实例都是 Swarm 中的一个任务。
云计算核心技术Docker教程:Docker Swarm 服务运行原理

容器是一个独立的进程。在集群模式中,每个任务通常对应一个容器。任务可以被视为调度器放置容器的“槽位”。一旦容器处于运行状态,调度器将跟踪任务的运行情况。如果容器未通过健康检查或被终止,相关任务也将终止。