【问题标题】:Can't deploy docker stack with compose file version 2.4无法使用撰写文件版本 2.4 部署 docker 堆栈
【发布时间】:2020-03-05 11:33:45
【问题描述】:

我正在尝试使用 compose 文件部署我的 docker 堆栈。当我使用 compose 文件版本 3+ 进行部署时,部署工作得非常好。但是当我尝试使用 2.4 或更低版本时,我收到此错误: unsupported Compose file version: 2.4

我需要使用 2.4 版本,因为版本 3 及更高版本不支持我的容器所需的几个参数(例如 cpusetruntime)。

我的 docker 版本是 19.03.6,docker-compose 是 1.25.4。

有没有办法在 Docker 19.03.6 上使用旧版本的 compose 文件进行部署?是我遗漏了什么还是最新的 docker 版本不再支持旧的撰写文件?

更新

原来 docker 19.03.6 在 deploy 中只支持 Version 3+。所以我只能使用版本 3+,它在 CPU 使用设置方面没有提供与 V2.4 相同的灵活性。在这种情况下(当您需要 cpusetruntime 之类的参数时)唯一的解决方案是手动运行容器或迁移到 Kubernetes 之类的东西。

以下是撰写文件示例:

3.7 版(工作)

version: '3.7'

services:

  mongo:
    image: mongo
    volumes:
      - ~/ProcessingServerData/mongodb/db:/data/db
      - ~/ProcessingServerData/mongodb/configdb:/data/configdb
    networks:
      - proc-net
    
  mongo-express:
    image: mongo-express
    depends_on:
      - mongo
    ports:
      - 8081:8081
    networks:
      - proc-net
  
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - 8082:8080
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - proc-net
    deploy:
      placement:
        constraints: [node.role == manager]

networks:
  proc-net:
    driver: overlay
    attachable: true

2.4 版(不工作)

version: '2.4'

services:

  mongo:
    image: mongo
    volumes:
      - type: bind
        source: ~/ProcessingServerData/mongodb/db
        target: /data/db
      - type: bind
        source: ~/ProcessingServerData/mongodb/configdb
        target: /data/configdb
    networks:
      - proc-net
    deploy:
      resources:
        cpuset: 0,1
    
  mongo-express:
    image: mongo-express
    depends_on:
      - mongo
    ports:
      - 8081:8081
    networks:
      - proc-net
    deploy:
      resources:
        cpuset: 0,1
  
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - 8082:8080
    volumes:
      - type: bind
        source: /var/run/docker.sock
        target: /var/run/docker.sock
    networks:
      - proc-net
    deploy:
      resources:
        cpuset: 0,1
      placement:
        constraints: [node.role == manager]

networks:
  proc-net:
    driver: overlay

【问题讨论】:

  • 版本 3 格式的要点是 swarm 模式不支持某些选项,因此在版本 3 中删除了这些选项,并且 swarm 模式需要该版本才能支持它的功能。

标签: docker docker-compose docker-swarm docker-stack


【解决方案1】:

deploy config 选项在 2.4 中不支持,您需要将文件更改为这个

version: '2.4'

services:

  mongo:
    image: mongo
    volumes:
      - type: bind
        source: ~/ProcessingServerData/mongodb/db
        target: /data/db
      - type: bind
        source: ~/ProcessingServerData/mongodb/configdb
        target: /data/configdb
    networks:
      - proc-net

  mongo-express:
    image: mongo-express
    depends_on:
      - mongo
    ports:
      - 8081:8081
    networks:
      - proc-net

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - 8082:8080
    volumes:
      - type: bind
        source: /var/run/docker.sock
        target: /var/run/docker.sock
    networks:
      - proc-net

networks:
  proc-net:
    driver: overlay

【讨论】:

  • 遗憾的是,这不是我的问题的解决方案。根据这篇文章,仅支持在较新的 docker 版本上部署版本 3+:forums.docker.com/t/…
  • 2.4 不能使用deploy,这里只有两个选项。 1- 使用 2.4 并去掉 deploy 部分,2- 升级到 v3
  • 是的,我现在明白了。谢谢你的回答。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-28
    • 2017-10-21
    • 2020-03-18
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2021-10-24
    相关资源
    最近更新 更多