当 运行 docker-compose 我得到:客户端版本 1.38 太新了。支持的最大 API 版本为 1.37"

when running docker-compose I get: client version 1.38 is too new. Maximum supported API version is 1.37"

我正在使用docker编写如下:

version: '3.7'
services: 
  couchdb:
    image: "ibmcom/couchdb3:preview"
    container_name: couch-api-test
    ports:
      - "5984:5984"

这是我的 docker 版本:

+ docker version
Client:
 Version:   18.03.0-ce
 API version:   1.37
 Go version:    go1.9.4
 Git commit:    0520e24
 Built: Wed Mar 21 23:10:01 2018
 OS/Arch:   linux/amd64
 Experimental:  false
 Orchestrator:  swarm

Server:
 Engine:
  Version:  18.03.0-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.4
  Git commit:   0520e24
  Built:    Wed Mar 21 23:08:31 2018
  OS/Arch:  linux/amd64
  Experimental: false

我的 docker-compose 版本是:

docker-compose version 1.25.0, build 0a186604
docker-py version: 4.1.0
CPython version: 3.7.4

当我 运行 我的 docker-compose 在我的 ubuntu 16 服务器中时,我得到这个:

client version 1.38 is too new. Maximum supported API version is 1.37", "stderr_lines": ["client version 1.38 is too new. Maximum supported API version is 1.37"

任何人都可以解释一下吗?

API 对 docker-compose 客户端发出的调用进行了版本控制,以确保客户端不会中断。例如,要创建一个容器,它会使 POST 变为:

/v1.36/containers/create?name=...

用于调用的 API 版本基于 docker-compose.yml 文件中的 version 指令。我在文档中找不到 docker-compose 文件格式和 API 之间的对应关系,但我假设版本 3.7 的 API 版本是 1.38.

根据此兼容性矩阵,18.03.0-ce docker 引擎版本与最高 3.6 和 API 版本 1.37 的撰写文件格式兼容: Compose file versions and upgrading

问题是 docker-compose 客户端比引擎更新,它理解 3.7 格式,但这种格式与引擎不兼容。为了使事情正常使用 version: '3.6' 或将引擎更新到版本 18.06.0+

希望对您有所帮助。