不支持“ ./docker-Compose. yml”中的版本。您可能会看到这个错误,因为您使用了错误的 Compose 文件版本

下面是我的 docker-compose. yml 文件:

version: '3.1'


services:
a:
image: tutum/hello-world
b:
image: tutum/hello-world


secrets:
id: my_password

如果我运行 $ docker-compose-up,我得到这个:

不支持“ ./docker-Compose. yml”中的版本。您可能会看到这个错误,因为您使用了错误的 Compose 文件版本。

我的码头作曲版本:

$ docker-compose --version
docker-compose version 1.11.0, build 6de1806

这里出了什么问题? 难道我的 docker-compose 版本不应该支持 docker-compose. yml 规范的 v3.1吗(根据 释放通知书,它确实支持) ?

172739 次浏览

你所做的一切都是正确的,它应该工作。但是在 docker-compose 1.11.0中有一个 臭虫,它不能识别文件格式3.1是有效的。(3.0版本)。

已经有一个新版本的 docker-compose (1.11.1) ,其中包括 bug:

修补漏洞

修正了一个3.1文件格式无法被 Compose 解析器识别为有效的错误

因此,如果您想使用文件格式3.1,我建议升级您的 docker-compose 版本。

目前最安全的升级 docker-compose 的方法是删除并重新安装它。

rm /usr/local/bin/docker-compose

重新安装:

curl -L https://github.com/docker/compose/releases/download/1.11.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
docker-compose version 1.11.1, build 7c5d5e4

现在文件格式已经没有错误了(我没有使用.yml 进行测试)。

docker-compose up
Starting compose_a_1
Starting compose_b_1

如果使用 Linux/ubuntu,这可能是显而易见的,但要小心作为 root 用户运行。

docker-compose -v

给予

docker-compose version 1.8.0, build unknown

sudo docker-compose -v

给予

docker-compose version 1.17.1, build 6d101fb

还要确保码头组合和码头机是最新的 @ lvthillo状态

我已经解决了这个问题,通过升级码头组成。

下面是在 ubuntu16.04中升级 docker-compose 的步骤

第一步:

$which docker-compose
/usr/bin/docker-compose

第二步:

$sudo rm /usr/bin/docker-compose

第三步:

curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose

第四步:

chmod +x /usr/bin/docker-compose

在实现 lvthillo 的解决方案之前,我已经完成了 docker-compose --version,但是我仍然看到过时的版本。事实证明,我需要清除 bash shell 保存的散列表。hash -r... 希望对其他人有用

尝试卸载旧版本并重新安装。

sudo apt remove docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
reboot

应该打印出来

docker-compose --version
docker-compose version 1.22.0, build 1719ceb

OX10.12.6 Sierra

1.22或更高版本的步骤

我有一个特定的问题/不兼容,我不想完全升级 Docker。我现在被困在码头17.06.0-ce-mac18。所以我只是想升级码头-作曲,没有别的。

我的脚步:

  • 确定码头的位置-组成: which docker-compose
  • 识别码头组合版本: docker-compose --version = docker-compose version 1.14.0, build c7bdf9e
  • 备份以前的码头-组成? : mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-bak
  • 用。。。代替。。。。。。代替。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 Curl-L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-‘uname -s’-‘ uname-m’>/usr/local/bin/docker-compose
  • 如果需要确定最新版本,只需检查 https://github.com/docker/compose/releases并将上面的版本替换为最新版本。
  • 校验版本: docker-compose --version = docker-compose version 1.22.0, build f46880f

我们不能告诉你没有看到特定的错误 首先运行这个命令检查它

docker build . 当你得到错误,然后在谷歌搜索它 在我的情况下,这是许可错误,当我尝试与 sudo 它工作。

希望对你有帮助

如果您的文件版本是3.7,并且您得到以下错误:

ERROR: Version in "./config.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.

解决办法如下:

  1. 删除当前的二进制 sudo apt-get remove docker-composesudo rm /usr/local/bin/docker-compose

  2. 下载二进制 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose。您可以找到当前最新的 版本在此(编写时为1.29.1)。

  3. 允许执行 sudo chmod +x /usr/local/bin/docker-compose

  4. 删除旧链接 sudo rm /usr/bin/docker-compose,使新链接 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

我希望这能解决问题。

要获得最新版本的 docker -

sudo apt remove docker-compose
curl -L https://github.com/docker/compose/releases/download/1.28.4/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose

我通过确保我的 新密码剩下的代码对齐来解决这个问题。它看起来需要一个特定的格式,如果它与其他代码不一致,它就不会看到“这个 Compose 文件的有效顶级部分是: 版本,服务,网络,卷,秘密,配置,以及以“ x-”开头的扩展。'

试试“ sudo”

sudo docker-compose up

这个问题是由 docker-compose = 1.25.0的低版本引起的,不幸的是,这是 Ubuntu 当前版本中支持的最高版本,包括 focus (20.04 LTS) ,groovy (20.10)和 hirsute。

升级码头-组成官方码头/非 Debian-way:

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ which docker-compose
/usr/local/bin/docker-compose
$ docker-compose -v
docker-compose version 1.27.4, build 40524192

参考文献

正如@Ivthillo 所说,您需要升级到1.11.1版本。
您应该首先删除当前版本文件

sudo rm -f ${which docker-compose}

然后安装1.11.1版本

sudo curl -L "https://github.com/docker/compose/releases/download/1.11.1/docker-compose-$(uname -s|sed -e 's/\(.*\)/\L\1/')-$(uname -m)" -o /usr/local/bin/docker-compose

并给予执行许可

sudo chmod +x /usr/local/bin/docker-compose

注意 : 对于安装最新版本,可以使用以下命令

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s|sed -e 's/\(.*\)/\L\1/')-$(uname -m)" -o /usr/local/bin/docker-compose

您不需要卸载 docker 或删除任何东西。 如果在运行 docker-compose up时出现类似下面的错误:

Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3")...

您只需修改您的 docker-compose 文件中指定的版本即可

version: '3.1' # change to version '3.3'


services:
a:
image: tutum/hello-world
b:
image: tutum/hello-world


secrets:
id: my_password


运行码头-重新组合起来。