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 命令的更多文档可在此处找到: