docker - "This node is not a swarm manager"错误,但我没有使用 docker swarm

标签 docker docker-compose

为了测试我们的托管构建,我正在尝试建立一个与主机和外部世界隔离的 docker 网络。

我有以下 docker-compose.yml (灵感来自 this forum post ):

version: '3'

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

  # ... more services (TODO)

networks:
  isolated:
    driver: overlay
    internal: true

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

ERROR: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.



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

如果我从文件中删除 services: 节,它会在没有错误的情况下启动网络。它警告网络未使用(显然)。

如果我删除 services/redis/networks 节,它会正确显示容器。

我究竟做错了什么?

我找到了 this answer ,它使用 driver: bridge 作为网络,但它仍然允许访问主机。

  • Docker 版本 18.09.3,构建 774a1f4
  • docker-compose 版本 1.21.2,构建 a133471
  • 最佳答案

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

    overlay network driver 非常依赖于群模式,可以有效地被认为是群模式组件。

    相反,您应该选择一个本地范围驱动程序而不是群范围驱动程序。

    您应该使用的驱动程序是 bridge 驱动程序。 bridge network driver 不是 swarm 模式的一部分,不依赖于激活的 swarm 模式来使用它。

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

    version: '3'
    
    services:
      redis:
        image: "redis:2.8.23"
        networks:
          - isolated
    
      # ... more services (TODO)
    
    networks:
      isolated:
        internal: true
    

    关于docker - "This node is not a swarm manager"错误,但我没有使用 docker swarm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55067113/

    相关文章:

    docker - Docker覆盖网络阻止IP转发

    amazon-s3 - 将 Docker 镜像从私有(private) Docker Registry 保存到 AWS S3 存储桶时出错

    docker - 无法使用 GCP 容器注册表中的镜像启动 Docker 容器

    c# - Active Directory Docker - Windows 身份验证模式

    docker - 具有Compose和Swarm的Docker

    docker - 如何检查何时拉取 docker 镜像?

    spring-boot - spring boot gradle任务 "bootBuildImage"构建的cloudfoundry buildpack docker镜像中的语言环境和编码如何设置

    python - Django 静态文件未找到值错误

    postgresql - 如何从 PGAdmin4 连接到 docker Postgres 服务器

    docker - 在Jenkins声明式管道中的代理设置期间,如何运行某些内容?