这是我的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"不受支持。您可能会看到此错误,因为您使用了错误的撰写文件版本。
我的docker-compose版本:
$ docker-compose --version
docker-compose version 1.11.0, build 6de1806
这里有什么问题?难道我的docker-compose版本支持docker-compose.yml规范的v3.1(根据release notes确实如此)?
答案 0 :(得分:74)
你正在做的一切正常,它应该工作。但是在docker-compose 1.11.0中有一个bug,它无法将文件格式3.1识别为有效。 (3.0作品)。
已经有一个新版本的docker-compose(1.11.1),它包含了错误修正:
错误修正
修正了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
答案 1 :(得分:37)
我已通过升级docker-compose解决了这个问题。
在ubuntu16.04
中升级docker-compose的步骤如下步骤1:
$which docker-compose
/usr/bin/docker-compose
步骤2:
$sudo rm /usr/bin/docker-compose
步骤3:
curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose
步骤4:
chmod +x /usr/bin/docker-compose
答案 2 :(得分:16)
如果文件版本为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-compose
或sudo 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
我希望这可以解决问题。
答案 3 :(得分:2)
获取最新版本的 docker-compose :
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
答案 4 :(得分:1)
在实施lvthillo的解决方案之前,我已经完成了docker-compose --version
的工作,但仍然出现过时的版本。原来,我需要刷新bash shell保留的哈希列表。 hash -r
...希望对其他人有用
答案 5 :(得分:1)
尝试卸载旧版本并重新安装。
sudo apt remove docker-compose
sudo curl -L 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
答案 6 :(得分:1)
我们无法不看特定错误就告诉您 首先通过运行此命令进行检查
doLast {
ant.checksum(file: archivePath, algorithm: "SHA-512")
}
当您收到错误时,然后在Google中搜索
在我的情况下,这是当我使用sudo尝试时的权限错误。
希望对您有帮助
答案 7 :(得分:0)
在osx 10.12.6 sierra上
v1.22或更高版本的步骤
我有一个特定的问题/不兼容,我不想完全升级docker。我目前被卡在docker 17.06.0-ce-mac18上。所以我只想升级docker-compose,什么都没有。
我的步骤:
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
docker-compose --version
= docker-compose version 1.22.0, build f46880f
答案 8 :(得分:0)
我通过确保我的新代码与其余代码对齐来解决了这个问题。看起来它需要有某种格式,如果它与代码的其余部分未对齐,它将看不到“此 Compose 文件的有效顶级部分是:版本、服务、网络、卷、秘密、配置和扩展名以“x-”开头。'
答案 9 :(得分:0)
试试“sudo”
sudo docker-compose up