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


90

这是我的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版本:

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

怎么了 我的docker-compose版本是否应该支持docker-compose.yml规范的v3.1版本(根据发行说明,确实如此)?


您的docker版本是什么(不是docker compose)?
lvthillo

Docker版本1.13.0,内部版本49bf474-
埃里克

docker-composedocker compose
阿卜杜·塔希里

@AbdouTahiri CLIdocker-compose只是Docker Compose技术。.docs.docker.com/compose
lvthillo '18

4
面对版本相同的问题"3.6"。我的码头工人是18.03.0-ce, build 0520e24
Rajeev Ranjan

Answers:


89

您所做的一切正确,应该可以正常工作。但是docker-compose 1.11.0中存在一个错误,该错误未将文件格式3.1识别为有效。(3.0版)。

已经有新版本的docker-compose(1.11.1)包含错误修正:

Bug修复

修复了Compose解析器无法识别3.1文件格式的错误

因此,如果您要使用文件格式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

3
谢谢。由于某种原因,在ubuntu 16.04中,curl cmd对我不起作用。然后我按照此处官方网站上的指南将其更新为最新的docker-compose版本。docs.docker.com/compose/install,与上述内容大致相同。但是在curl cmd中,“>”更改为“ -o”。
zhihong '17

8
错误也影响版本1.8.0;版本1.16.1可用,并且可以在Ubuntu 16.04上完美运行。只是修复上述路径的版本组件,由于反引号不能将其明确粘贴在此注释中:/
chrisinmtown

不知道原因,但curl命令不执行。..说允许被拒绝。
Deepak Sharma

1
那些在运行curl命令时遇到
Deepak Sharma

1
@DeepakSharma您必须以root用户身份执行curl和chmod命令(或使用sudo)
lvthillo

50

我已经通过升级docker-compose解决了这个问题。

按照以下步骤在ubuntu16.04中升级docker-compose

步骤1:

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

第2步:

$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

这对Elementary OS Loki(0.4.1)来说对我来说效果很好。
J. Afarian

6
由于docker
DrB

1
我从apt-get获得的版本是1.17,也有这个问题(Linux Mint 19)。我下载了1.24.1,类似于这些步骤的布局,似乎可以正常工作。谢谢!
将于

1
删除后,sudo apt install docker-compose告诉我我已经有该版本,并docker-compose up告诉我我没有安装docker-compose。你们为什么不使用apt?我现在有两个问题。
Ambroise Rabier

14

如果文件版本为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.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

(3) sudo chmod +x /usr/local/bin/docker-compose

(4) sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

我希望这可以解决问题。


4

如果使用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

还要确保docker-compose和docker -machine是最新的@lvthillo状态


这应该是正确的答案。我在Ubuntu中,我必须使用SUDO命令进行工作
brunoramonalmeida

sudo docker-compose -v给了我docker-compose版本1.8.0,版本未知
Julien

是sudo吗?
Glen Thompson

-1。须藤很不好 这是一种替代方案:docs.docker.com/install/linux/linux-postinstall/…–
Ligemer,

不错的补充,尽管我不会说它的“坏”。随时编辑答案以将其作为补充。
Glen Thompson

2

docker-compose --version在实施lvthillo的解决方案之前,我已经做过,但是仍然出现过时的版本。原来,我需要刷新bash shell保留的哈希列表。 hash -r...希望对其他人有用


2

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

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

3
为什么仅因为下载了文件就重启计算机?
索伦·比约恩斯塔德

1

我们无法告诉您而没有观看特定错误,请先通过运行此命令进行检查

docker build . 当您收到错误时,在我的情况下在google中搜索它,这是当我使用sudo尝试时的权限错误,它起作用了。

希望对您有帮助


0

在OSX 10.12.6 Sierra

v1.22或更高版本的步骤

我有一个特定的问题/不兼容,我不想完全升级docker。我目前被卡在docker 17.06.0-ce-mac18上。所以我只想升级docker-compose而没有其他任何东西。

我的步骤:

  • 识别docker-compose的位置: which docker-compose
  • 识别docker-compose版本:docker-compose --version=docker-compose version 1.14.0, build c7bdf9e
  • 备份以前的docker-compose ?: 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.