【问题标题】:How to use Docker Compose with legacy Docker Swarm如何将 Docker Compose 与旧版 Docker Swarm 一起使用
【发布时间】:2018-04-18 06:39:37
【问题描述】:

我正在尝试使用ComposeSwarm 部署我的应用程序。目前我不想将我的docker-compose.yamlv2 升级到v3。因此,我只能使用 standalone(legacy) swarm 而不是基于 Stoneman 的 answer 和官方 Swarm 文档的 docker swarm mode 来做到这一点。

按照official instruction,我成功搭建了一个swarm集群。我在swarm manager 节点上运行docker -H :4000 info 来检查swarm 集群状态,如下图所示。此集群中还有另外两个工作节点。接下来,我想用这个集群create 一个覆盖网络,并在docker-compose.yaml 中引用这个网络。但是当我在swarm manager节点上运行docker -H :4000 network create -d overlay test创建网络时,报错:Error response from daemon: Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

那么,我怎样才能创建一个带有 swarm 集群的网络(没有 docker-machinevirtual box)?目前,swarm manager 和 worker 节点作为 docker 容器运行。

【问题讨论】:

  • Chalex 你读过@Bret 的回答吗? swarm classic 是您的要求吗?
  • Jinna,我已经转向 Docker Swarm 模式并解决了我的问题。我只是想知道如何使用经典的 Docker Swarm 建立一个覆盖网络。我以为会有一些详细的说明。

标签: docker docker-compose docker-swarm docker-networking


【解决方案1】:

您是否首先使用自己的 etcd 后端设置了覆盖网络? https://docs.docker.com/network/overlay-standalone.swarm/

Swarm“经典”已被弃用,取而代之的是 docker swarm 模式。经典中的一切都更难,包括设置覆盖。除非您有严格的要求,否则我不建议将其用于任何新事物。

【讨论】:

  • 是的,我尝试使用经典 Swarm 设置覆盖网络。但我没能做到。然后我转向 Docker Swarm Mode 解决了我的问题。那么是否可以使用 Classic Swarm 设置覆盖网络?使用 Classic Swarm 设置覆盖网络总是这么晦涩难懂吗?
  • 是的,因为 Classic Swarm 在被 Swarm 模式取代之前仅存在 1.5 年。之后它没有收到任何进一步的功能或社区的喜爱,因为 Swarm 模式以更少的努力解决了大部分相同的问题。
  • 好的。我懂了。谢谢你的回答。
【解决方案2】:

在 swarm 模式下,您在 swarm manager 主机上运行所有命令。与创建网络、秘密等相同。 您可以通过以下方式找到 docker manager 机器: $docker 节点 ls Manager 主机标有 MANAGER STATUS:Leader。 在管理器上创建网络后,该 swarm 上的所有节点都应该看到该网络。

“我运行了 docker -H :4000 network create -d 覆盖测试” 最好在堆栈 yml 文件中声明网络,以便更快、更轻松地部署。您可以在 yml 文件中创建网络并公开您的端口,无需在每次运行堆栈时手动创建它们。 在 docker 服务下添加如下块:

services:
...
#Network
   networks:
    - network-name-here
...
#Exposed ports:
  ports:
    - target: 4000 
      published: 4000

在 yml 文件的末尾添加以下块来声明网络,因此每次运行 $docker stack deploy 时都会创建它:

networks:
  network-name-here:
   driver: overlay 

【讨论】:

  • 感谢您的回答。但实际上我没有使用swarm mode。我用classic swarm,又名standalonelegacy swarm 建立了一个swarm 集群。对于swarm mode,我没有遇到任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2019-12-25
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多