Skip to content

部署到 Swarm ​

原文:https://docs.docker.com/get-started/swarm-deploy/

先决条件 ​

  • 按照获取 Docker 中的描述下载并安装 Docker Desktop。
  • 完成第二部分中的应用程序容器化。
  • 通过键入 docker system info 并查找消息 Swarm: active(您可能需要稍微滚动屏幕)确保在您的 Docker Desktop 上启用了 Swarm。

如果 Swarm 没有运行,只需在 shell 提示符下键入 docker swarm init 来设置它。

介绍 ​

既然您已经展示了应用程序的各个组件可以作为独立容器运行,并展示了如何使用 Kubernetes 部署它,您现在可以看看如何让它们被 Docker Swarm 管理。Swarm 提供了许多用于扩展、网络、保护和维护您的容器化应用程序的工具,远超容器本身的能力。

为了验证您的容器化应用程序在 Swarm 上运行良好,您将使用 Docker Desktop 内置的 Swarm 环境在开发机器上部署您的应用程序,然后再将其交付到生产中的完整 Swarm 集群上运行。Docker Desktop 创建的 Swarm 环境是完全功能的,意味着它具有您的应用程序在真实集群上将享受的所有 Swarm 功能,可从您的开发机器上方便地访问。

使用堆栈文件描述应用程序 ​

与本教程的上一步不同,Swarm 从不创建单独的容器。相反,所有 Swarm 工作负载都被安排为服务,这些服务是由 Swarm 自动维护的具有附加网络功能的可扩展容器组。此外,所有 Swarm 对象都可以并且应该在称为堆栈文件的清单中进行描述。这些 YAML 文件描述了您的 Swarm 应用的所有组件和配置,并可以用来在任何 Swarm 环境中创建和销毁您的应用。

现在您可以编写一个简单的堆栈文件来运行和管理您的 Todo 应用,即在教程第二部分中创建的 getting-started 容器镜像。将以下内容放在名为 bb-stack.yaml 的文件中:

yaml
version: "3.7"

services:
  bb-app:
    image: getting-started
    ports:
      - "8000:3000"

在这个 Swarm YAML 文件中,有一个对象,一个 service,描述了一个相同容器的可扩展组。在这种情况下,您将获得一个容器(默认值),并且该容器将基于您在教程第二部分中创建的 getting-started 镜像。此外,您要求 Swarm 将到达开发机器上 8000 端口的所有流量转发到 getting-started 容器内的 3000 端口。

Kubernetes 服务和 Swarm 服务非常不同

尽管名称相似,但这两个编排器对 'service' 一词的含义截然不同。在 Swarm 中,服务同时提供调度和网络设施,创建容器并提供将流量路由到它们的工具。在 Kubernetes 中,调度和网络是分开处理的,部署(或其他控制器)负责将容器作为 pods 进行调度,而服务只负责为这些 pods 添加网络功能。

部署并检查您的应用程序 ​

  1. 将您的应用程序部署到 Swarm:

    console
    docker stack deploy -c bb-stack.yaml demo

    如果一切顺利,Swarm 将报告创建了所有您的堆栈对象,没有任何问题:

    shell
    Creating network demo_default
    Creating service demo_bb-app

    请注意,除了您的服务外,Swarm 还默认创建了一个 Docker 网络,以隔离作为您堆栈一部分部署的容器。

  2. 通过列出您的服务确保一切正常:

    console
    docker service ls

    如果一切顺利,您的服务将报告其副本已创建 1/1:

    shell
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    il7elwunymbs        demo_bb-app         replicated          1/1                 getting-started:latest   *:8000->3000/tcp

    这表明您请求的服务中的 1/1 容器正在运行。此外,您会看到您的开发机器上的 8000 端口被转发到您的 getting-started 容器中的 3000 端口。

  3. 打开浏览器并访问 localhost:8000 上的 Todo 应用;您应该看到您的 Todo 应用,与您在教程第二部分中作为独立容器运行时一样。

  4. 一旦满意,拆除您的应用程序:

    console
    docker stack rm demo

结论 ​

至此,您已经成功使用 Docker Desktop 将您的应用程序部署到开发机器上的一个完全功能的 Swarm 环境中。您现在可以向您的应用添加其他组件并充分利用 Swarm 的所有功能和力量,就在您自己的机器上。

除了部署到 Swarm 外,您还将您的应用程序描述为一个堆栈文件。这个简单的文本文件包含了创建您的应用程序运行状态所需的一切;您可以将其检入版本控制并与同事共享,让您将应用程序分发到其他集群(例如在您的开发环境之后可能会有的测试和生产集群)。

Swarm 和 CLI 参考资料 ​

本文中使用的所有新 Swarm 对象和 CLI 命令的更多文档可在此处找到: