部署成群

预计阅读时间:5分钟

先决条件

  • 按照方向和设置中的说明下载并安装Docker Desktop 。
  • 第2部分中通过容器化应用程序进行工作。
  • 通过键入docker system info并查找消息,确保在Docker桌面上启用了Swarm Swarm: active(您可能需要向上滚动一点)。

    如果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环境中轻松创建和销毁您的应用程序。

让我们编写一个简单的堆栈文件来运行和管理公告栏。将以下内容放在名为的文件中bb-stack.yaml

version: '3.7'

services:
  bb-app:
    image: bulletinboard:1.0
    ports:
      - "8000:8080"

在这个Swarm YAML文件中,我们只有一个对象:a service,描述一组可伸缩的相同容器。在这种情况下,您只会得到一个容器(默认容器),并且该容器将基于快速入门教程第2部分中bulletinboard:1.0创建的图像。此外,我们已要求Swarm将到达开发计算机上端口8000的所有流量转发到公告板容器内的端口8080。

Kubernetes服务和Swarm服务有很大的不同!尽管名称相似,但两个协调器在“服务”一词中的含义却截然不同。在Swarm中,服务同时提供调度联网功能,创建容器并提供用于将流量路由到它们的工具。在Kubernetes中,调度和联网分别处理:部署(或其他控制器)将容器的调度作为Pod处理,而服务仅负责将网络功能添加到这些Pod。

部署并检查您的应用程序

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

    docker stack deploy -c bb-stack.yaml demo
    

    如果一切顺利,Swarm将报告创建所有堆栈对象,而不会产生任何投诉:

    Creating network demo_default
    Creating service demo_bb-app
    

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

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

    docker service ls
    

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

    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    il7elwunymbs        demo_bb-app         replicated          1/1                 bulletinboard:1.0   *:8000->8080/tcp
    

    这表示您在服务中要求的1/1个容器已启动并正在运行。此外,我们看到开发计算机上的端口8000已转发到公告板容器中的端口8080。

  3. 打开浏览器,访问位于的公告板localhost:8000;网址为:您应该看到您的公告板,就像我们在《快速入门》教程的第2部分中将其作为独立容器运行时一样。

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

    docker stack rm demo
    

结论

至此,我们已经成功地使用Docker Desktop将我们的应用程序部署到开发机器上的功能齐全的Swarm环境中。我们还没有对Swarm做很多事情,但是现在已经敞开了大门:您可以开始在您自己的计算机上向您的应用添加其他组件,并利用Swarm的所有功能和强大功能。

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

Swarm和CLI参考

此处提供了本文中使用的所有新Swarm对象和CLI命令的更多文档:

群服务堆栈