部署到 Swarm
笔记
Swarm 模式是用于管理 Docker 守护进程集群的高级功能。
如果您打算使用 Swarm 作为生产运行时环境,请使用 Swarm 模式。
如果您不打算使用 Swarm 进行部署,请改用 Docker Compose。如果您正在针对 Kubernetes 部署进行开发,请考虑使用 Docker Desktop 中的集成 Kubernetes 功能。
先决条件
按照获取 Docker中的说明下载并安装 Docker Desktop 。
在第 2 部分中完成应用程序容器化 。
docker system info
通过键入并查找消息Swarm: active
(您可能需要向上滚动一点),确保在 Docker 桌面上启用了 Swarm。如果 Swarm 没有运行,只需输入
docker swarm init
shell 提示符即可进行设置。
介绍
现在,您已经演示了应用程序的各个组件作为独立容器运行,并展示了如何使用 Kubernetes 进行部署,您可以了解如何安排它们由 Docker Swarm 进行管理。 Swarm 提供了许多工具来扩展、联网、保护和维护容器化应用程序,这些工具超出了容器本身的能力。
为了验证您的容器化应用程序在 Swarm 上运行良好,您将在开发计算机上使用 Docker Desktop 内置的 Swarm 环境来部署您的应用程序,然后将其交付到生产中的完整 Swarm 集群上运行。 Docker Desktop 创建的 Swarm 环境功能齐全,这意味着它具有您的应用程序在真实集群上可以享受的所有 Swarm 功能,可以从您的开发计算机方便地访问。
使用堆栈文件描述应用程序
Swarm 永远不会像您在本教程的上一步中那样创建单独的容器。相反,所有 Swarm 工作负载都被安排为服务,这些服务是可扩展的容器组,具有由 Swarm 自动维护的附加网络功能。此外,所有 Swarm 对象都可以而且应该在称为堆栈文件的清单中进行描述。这些 YAML 文件描述了 Swarm 应用程序的所有组件和配置,可用于在任何 Swarm 环境中创建和销毁您的应用程序。
现在,您可以编写一个简单的堆栈文件来运行和管理您的 Todo 应用程序,即本教程第 2 部分getting-started
中创建的
容器映像。将以下内容放入名为 的文件中:bb-stack.yaml
笔记
该命令使用 Compose V1 使用的
docker stack deploy
旧版 Compose 文件版本 3格式。 Compose 规范定义的最新格式 与该命令不兼容docker stack deploy
。有关 Compose 演变的更多信息,请参阅 Compose 的历史。
version: '3.7'
services:
bb-app:
image: getting-started
ports:
- "8000:3000"
在此 Swarm YAML 文件中,有一个对象 a service
,描述一组可扩展的相同容器。在这种情况下,您将只获得一个容器(默认),并且该容器将基于您在本教程第 2 部分getting-started
中创建的映像
。此外,您还要求 Swarm 将到达开发计算机上端口 8000 的所有流量转发到我们入门容器内的端口 3000。
Kubernetes 服务和 Swarm 服务有很大不同
尽管名称相似,但这两个协调器对“服务”一词的含义却截然不同。在 Swarm 中,服务提供调度和网络设施,创建容器并提供将流量路由到它们的工具。在 Kubernetes 中,调度和网络是分开处理的,部署(或其他控制器)将容器作为 Pod 进行调度,而服务仅负责向这些 Pod 添加网络功能。
部署并检查您的应用程序
将您的应用程序部署到 Swarm:
$ docker stack deploy -c bb-stack.yaml demo
如果一切顺利,Swarm 将报告创建所有堆栈对象,没有任何抱怨:
Creating network demo_default Creating service demo_bb-app
请注意,除了您的服务之外,Swarm 还默认创建一个 Docker 网络,以隔离作为堆栈一部分部署的容器。
通过列出您的服务来确保一切正常:
$ docker service ls
如果一切顺利,您的服务将报告已创建 1/1 的副本:
ID NAME MODE REPLICAS IMAGE PORTS il7elwunymbs demo_bb-app replicated 1/1 getting-started:latest *:8000->3000/tcp
这表示您要求作为服务一部分的 1/1 容器已启动并正在运行。此外,您还会看到开发计算机上的端口 8000 正在转发到入门容器中的端口 3000。
打开浏览器并访问您的 Todo 应用程序
localhost:8000
:您应该会看到您的 Todo 应用程序,与您在本教程的第 2 部分中将其作为独立容器运行时的情况相同 。满意后,拆除您的应用程序:
$ docker stack rm demo
结论
至此,您已成功使用 Docker Desktop 将应用程序部署到开发计算机上功能齐全的 Swarm 环境中。现在,您可以将其他组件添加到您的应用程序中,并在您自己的计算机上利用 Swarm 的所有功能和强大功能。
除了部署到 Swarm 之外,您还将应用程序描述为堆栈文件。这个简单的文本文件包含在运行状态下创建应用程序所需的一切;您可以将其签入版本控制并与同事共享,从而使您可以将应用程序分发到其他集群(例如可能位于开发环境之后的测试和生产集群)。
Swarm 和 CLI 参考
本文中使用的所有新 Swarm 对象和 CLI 命令的更多文档可在此处找到: