Версія в “./docker-compose.yml” не підтримується. Можливо, ви бачите цю помилку, оскільки ви використовуєте неправильну версію файлу "Написати"


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" не підтримується. Можливо, ви бачите цю помилку, оскільки ви використовуєте неправильну версію файлу "Написати".

Моя версія docker-compose:

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

Що тут не так? Чи не повинна моя версія docker-compose підтримувати v3.1 специфікації docker-compose.yml (відповідно до приміток до випуску це робить)?


яка версія вашого docker (не docker compose)?
lvthillo

Docker, версія 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 не розпізнавався як дійсний синтаксичним аналізатором

Тому я б рекомендував оновити вашу версію 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
Дякую. З якоїсь причини, ваша доза cmd curl не працює для мене в 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команди, спробуйте наступне
Діпак Шарма

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

крок4:

chmod +x /usr/bin/docker-compose

Це добре працювало для мене на елементарній ОС Loki (0.4.1).
J. Afarian

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, збірка невідома
Жюльєн

Це з судо?
Глен Томпсон,

-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
Навіщо перезавантажувати машину лише тому, що ви завантажили файл?
Soren Bjornstad

1

Ми не можемо сказати вам, не переглядаючи конкретну помилку, спочатку перевірте її, виконавши цю команду

docker build . коли ви отримали помилку, то шукайте її в google, у моєму випадку це була помилка дозволу, коли я спробував її з sudo, це спрацювало.

Сподіваюся, це допоможе вам


0

На OSX 10.12.6 Сьєрра

Кроки для версії 1.2 або вище

У мене була конкретна проблема / несумісність, коли я не хотів повністю оновлювати докер. На даний момент я застряг на докері 17.06.0-ce-mac18. Тому я просто хотів оновити docker-compose і нічого іншого.

Мої кроки:

  • Визначте місце розташування docker-compose: which 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.