Версия в «./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 --version
docker-compose version 1.11.0, build 6de1806

Что здесь не так? Разве моя версия docker-compose не должна поддерживать v3.1 спецификации docker-compose.yml (согласно примечаниям к выпуску , да)?

Эрик
источник
какая у вас версия докера (не докер компоновка)?
lvthillo
Докер версии 1.13.0, сборка 49bf474
Эрик
это, docker-composeа неdocker compose
Абду Тахири
@AbdouTahiri CLI это , docker-composeно Docker Composeэто технология .. docs.docker.com/compose
lvthillo
4
Та же проблема с версией "3.6". Мой докер18.03.0-ce, build 0520e24
Раджив Ранджан

Ответы:

90

Вы все делаете правильно и должно работать. Но в docker-compose 1.11.0 была ошибка, из -за которой формат файла 3.1 не распознавался как действительный. (3.0 работает).

Уже существует новый выпуск docker-compose (1.11.1), который включает исправление ошибки:

Исправление ошибок

Исправлена ​​ошибка, из-за которой формат файла 3.1 не распознавался парсером Compose как допустимый.

Поэтому я бы рекомендовал обновить вашу версию docker-compose, если вы хотите использовать формат файла 3.1.

На данный момент самый безопасный способ обновить 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
lvthillo
источник
3
Спасибо. По какой-то причине ваша доза curl cmd не работает для меня в ubuntu 16.04. Затем я обновился до последней версии docker-compose, следуя руководству на официальном сайте здесь. docs.docker.com/compose/install , что более или менее похоже на предыдущее . Но в curl cmd ">" изменится на "-o".
zhihong
8
Ошибка также поражает версию 1.8.0; версия 1.16.1 доступна и отлично работает в Ubuntu 16.04. Просто исправьте компонент версии в указанном выше пути, не можете четко вставить его в этот комментарий из-за обратных кавычек: /
chrisinmtown
Не знаю причины, но curlкоманда не выполняется. .. говорит, что в разрешении отказано.
Дипак Шарма
1
Те, кто сталкивается с ошибкой при выполнении curlкоманды, попробуйте следующее: docs.docker.com/compose/install/#install-compose
Дипак Шарма
1
@DeepakSharma Вы должны выполнять команды curl и chmod от имени пользователя root (или использовать sudo)
lvthillo
51

Я решил проблему, обновив docker-compose.

Выполнены следующие шаги для обновления docker-compose в ubuntu16.04

шаг 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

step4:

chmod +x /usr/bin/docker-compose
Тхавапракаш Сваминатан
источник
У меня это хорошо сработало на Elementary OS Loki (0.4.1).
J. Afarian 05
6
Поскольку версия докера часто меняется, посмотрите здесь, чтобы установить последнюю версию докера github.com/docker/compose/releases
DrB
1
Версия, которую я получал от apt-get, была 1.17, у нее также была эта проблема (Linux Mint 19). Скачал 1.24.1 аналогично тому, как эти шаги выложены, вроде работает. Благодарность!
Уилл Бак
1
После его удаления sudo apt install docker-composeскажите, что у меня уже есть версия, и docker-compose upскажите, что у меня не установлен docker-compose. Почему вы, ребята, не пользуетесь apt? У меня сейчас две проблемы.
Амбруаз Рабье
15

Если версия вашего файла - 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

Надеюсь, это решит проблему.

dPac
источник
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

Также убедитесь , докер-Compose и докер-машина в актуальном состоянии, как @lvthillo государств

Глен Томпсон
источник
Это должен быть правильный ответ. Я в Ubuntu, мне пришлось использовать команду SUDO для работы
brunoramonalmeida
sudo docker-compose -v дает мне docker-compose версии 1.8.0, сборка неизвестна
Жюльен
Это с sudo?
Глен Томпсон
-1. Судо - это плохо. Вот альтернатива: docs.docker.com/install/linux/linux-postinstall/…
Лигемер
Хорошее дополнение, хотя я бы не сказал, что это "плохо". Не стесняйтесь редактировать ответ, чтобы включить его в качестве дополнения.
Глен Томпсон
2

Я сделал это docker-compose --versionдо внедрения решения lvthillo, и у меня все еще появлялись устаревшие версии. Оказалось, что мне нужно очистить список хэшей, за который держалась моя оболочка bash. 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
qwerty
источник
3
Зачем перезагружать машину только потому, что вы скачали файл?
Сорен Бьорнстад
1

Мы не можем сказать вам, не наблюдая за конкретной ошибкой, сначала проверьте ее, выполнив эту команду

docker build . когда вы получили ошибку, выполните поиск в Google. В моем случае это была ошибка разрешения, когда я попробовал ее с помощью sudo, она сработала.

Надеюсь, это поможет тебе

user10538706
источник
0

На osx 10.12.6 sierra

Шаги для версии 1.22 или выше

У меня была конкретная проблема / несовместимость, когда я не хотел полностью обновлять докер. Я застрял на докере 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
проводной00
источник