“此节点不是群集管理器”错误,但我没有使用docker swarm

Rog*_*mbe 2 docker docker-compose

为了测试我们的托管构建,我试图建立一个与主机和外界隔离的泊坞窗网络。

我有以下内容docker-compose.yml(受此论坛帖子的启发):

version: '3'

services:
  redis:
    image: "redis:2.8.23"
    networks:
      - isolated

  # ... more services (TODO)

networks:
  isolated:
    driver: overlay
    internal: true
Run Code Online (Sandbox Code Playgroud)

当我跑步时docker-compose up -d; 它会创建网络,但随后无法创建容器,并报告以下内容:

错误:该节点不是群集管理器。使用“ docker swarm init”或“ docker swarm join”将此节点连接到swarm,然后重试。

但是我没有使用docker swarm,也不想使用。

如果我services:从文件中删除该节,它将启动网络而不会出现错误。它警告网络未使用(显然)。

如果删除services/redis/networks节,它将正确地调出容器。

我究竟做错了什么?

我找到了这个答案该答案driver: bridge用于网络,但是仍然允许访问主机。


  • Docker版本18.09.3,内部版本774a1f4
  • docker-compose版本1.21.2,内部版本a133471

pro*_*erq 5

您已将网络驱动程序指定为overlay

覆盖网络驱动程序,在很大程度上取决于群模式,并能有效地被认为是一个群模式的组成部分。

相反,您应该选择一个本地作用域驱动程序而不是群集作用域驱动程序。

您应该使用的bridge驱动程序是驱动程序。该桥接网络驱动程序不是群模式的一部分,并且不依赖于群模式是积极地利用它。

由于您使用的是docker-compose,因此您可以完全不使用特定的驱动程序,它将为您选择合适的驱动程序。我建议driver: overlay完全删除该行,并按原样保留文件的其余部分:

version: '3'

services:
  redis:
    image: "redis:2.8.23"
    networks:
      - isolated

  # ... more services (TODO)

networks:
  isolated:
    internal: true
Run Code Online (Sandbox Code Playgroud)