【发布时间】:2020-03-05 11:33:45
【问题描述】:
我正在尝试使用 compose 文件部署我的 docker 堆栈。当我使用 compose 文件版本 3+ 进行部署时,部署工作得非常好。但是当我尝试使用 2.4 或更低版本时,我收到此错误:
unsupported Compose file version: 2.4
我需要使用 2.4 版本,因为版本 3 及更高版本不支持我的容器所需的几个参数(例如 cpuset 和 runtime)。
我的 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 相同的灵活性。在这种情况下(当您需要 cpuset 和 runtime 之类的参数时)唯一的解决方案是手动运行容器或迁移到 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