Версия в «./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

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

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


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

3
Зачем перезагружать машину только потому, что вы скачали файл?
Сорен Бьорнстад

1

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

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

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.