【问题标题】:Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version不支持“./docker-compose.yml”中的版本。您可能会看到此错误,因为您使用了错误的 Compose 文件版本
【发布时间】:2017-02-09 14:58:43
【问题描述】:

这是我的 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(根据release notes,它支持)吗?

【问题讨论】:

  • 你的 docker 版本是什么(不是 docker compose)?
  • Docker 版本 1.13.0,构建 49bf474
  • 它的 docker-compose 而不是 docker compose
  • @AbdouTahiri CLI 是 docker-composeDocker Compose 是技术.. docs.docker.com/compose
  • 面临与版本"3.6" 相同的问题。我的码头工人是18.03.0-ce, build 0520e24

标签: docker-compose


【解决方案1】:

你做的一切都是正确的,它应该可以工作。但是在 docker-compose 1.11.0 中有一个 bug,它不能将文件格式 3.1 识别为有效。 (3.0 作品)。

已经有一个新版本的 docker-compose (1.11.1),其中包含错误修复:

错误修正

修复了 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

【讨论】:

  • 谢谢。出于某种原因,您的 curl cmd 在 ubuntu 16.04 中对我不起作用。然后我按照官方网站上的指南更新到最新的 docker-compose 版本。 docs.docker.com/compose/install,和上面的差不多。但是在 curl cmd 中,“>”更改为“-o”。
  • Bug 也影响版本 1.8.0;版本 1.16.1 可用并且在 Ubuntu 16.04 上完美运行。只需修复上面路径的版本组件,由于反引号,无法将其清楚地粘贴在此评论中:/
  • 不知道原因但是curl 命令没有执行。 .. 表示权限被拒绝。
  • 那些在运行curl 命令时遇到错误的人,试试这个:docs.docker.com/compose/install/#install-compose
  • @DeepakSharma 您必须以 root 用户身份执行 curl 和 chmod 命令(或使用 sudo)
【解决方案2】:

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

按照以下步骤在 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

【讨论】:

  • 这对我来说在 Elementary OS Loki (0.4.1) 上运行良好。
  • 由于 docker 版本经常变化,请看这里安装最新的 docker 版本github.com/docker/compose/releases
  • 我从 apt-get 获得的版本是 1.17,它也有这个问题(Linux Mint 19)。我下载了 1.24.1,类似于这些步骤的布局,似乎正在工作。谢谢!
  • 删除后sudo apt install docker-compose告诉我已经有版本,docker-compose up告诉我没有安装docker-compose。为什么你们不使用apt?我现在有两个问题。
【解决方案3】:

如果您的文件版本是 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】:

获取最新版本的 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

【讨论】:

    【解决方案5】:

    如果使用 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 命令才能工作
    • sudo docker-compose -v 给我 docker-compose 版本 1.8.0,构建未知
    • 是 sudo 吗?
    • -1。须藤不好。这是另一种选择:docs.docker.com/install/linux/linux-postinstall/…
    • 不错的补充,虽然我不会说它“不好”。随意编辑答案以将其作为补充。
    【解决方案6】:

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

    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
    

    【讨论】:

    • 下载文件为什么要重启机器?
    • 为我工作,但不需要重启
    【解决方案7】:

    在实施 lvthillo 的解决方案之前,我已经完成了docker-compose --version,但仍然出现过时的版本。事实证明,我需要刷新我的 bash shell 所持有的哈希列表。 hash -r ...希望对其他人有用

    【讨论】:

      【解决方案8】:

      如果不查看特定错误,我们无法告诉您 首先通过运行此命令检查它

      docker build . 当你得到错误然后在谷歌搜索它 在我的情况下,当我使用 sudo 尝试它时,它是权限错误。

      希望对你有帮助

      【讨论】:

        【解决方案9】:

        正如@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
        

        【讨论】:

          【解决方案10】:

          在 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

          【讨论】:

            【解决方案11】:

            我通过确保我的新代码其余代码保持一致来解决了这个问题。它似乎需要具有某种格式,如果它与其余代码未对齐,则不会看到“此 Compose 文件的有效顶级部分是:版本、服务、网络、卷、机密、以“x-”开头的配置和扩展。'

            【讨论】:

              【解决方案12】:

              尝试使用“sudo”

              sudo docker-compose up
              

              【讨论】:

                【解决方案13】:

                这个问题是由于 docker-compose = 1.25.0 的版本太低造成的,不幸的是,这是 Ubuntu 在其当前版本中支持的最高版本,包括focal (20.04LTS)、groovy (20.10) 和hirsute。

                升级docker-compose官方docker/non-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
                

                Reference

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-07-09
                  • 2020-02-13
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多