La versión en "./docker-compose.yml" no es compatible. Es posible que vea este error porque está utilizando la versión de archivo de redacción incorrecta

90

Aquí está mi archivo docker-compose.yml:

version: '3.1'

services:
  a:
    image: tutum/hello-world
  b:
    image: tutum/hello-world

secrets:
  id: my_password

Si corro $ docker-compose-up, obtengo esto:

La versión en "./docker-compose.yml" no es compatible. Es posible que vea este error porque está utilizando la versión de archivo de redacción incorrecta.

Mi versión de docker-compose:

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

¿Qué pasa aquí? ¿Mi versión de docker-compose no debería ser compatible con v3.1 de la especificación docker-compose.yml (de acuerdo con las notas de la versión , sí)?

Eric
fuente
¿Cuál es la versión de su Docker (no Docker Comose)?
lvthillo
Docker versión 1.13.0, compilación 49bf474
Eric
es docker-composey nodocker compose
Abdou Tahiri
@AbdouTahiri CLI es docker-composepero Docker Composees la tecnología .. docs.docker.com/compose
lvthillo
4
Frente al mismo problema con la versión "3.6". Mi acoplador es18.03.0-ce, build 0520e24
Rajeev Ranjan

Respuestas:

90

Estás haciendo todo bien y debería funcionar. Pero hubo un error en docker-compose 1.11.0 que no reconoció el formato de archivo 3.1 como válido. (3,0 obras).

Ya existe una nueva versión de docker-compose (1.11.1) que incluye la corrección de errores:

Corrección de errores

Se corrigió un error por el cual el analizador Compose no reconocía el formato de archivo 3.1 como válido.

Por lo tanto, recomendaría actualizar su versión de docker-compose si desea usar el formato de archivo 3.1.

Por el momento, la forma más segura de actualizar docker-compose es eliminándolo y reinstalándolo.

rm /usr/local/bin/docker-compose

Reinstalar:

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

Ahora ya no hay ningún error en el formato de archivo. (No probé con tu .yml).

docker-compose up
Starting compose_a_1
Starting compose_b_1
lvthillo
fuente
3
Gracias. Por alguna razón, su dosis de curl cmd no me funciona en ubuntu 16.04. Luego actualicé a la última versión de docker-compose siguiendo la guía en el sitio web oficial aquí. docs.docker.com/compose/install , que es más o menos lo mismo que el anterior. Pero en curl cmd, el ">" cambia a "-o".
zhihong
8
El error también afecta a la versión 1.8.0; la versión 1.16.1 está disponible y funcionó perfectamente en Ubuntu 16.04. Simplemente corrija el componente de versión de la ruta anterior, no puede pegarlo claramente en este comentario debido a las comillas
inversas
No sé el motivo, pero el curlcomando no se ejecuta. .. dice permiso denegado.
Deepak Sharma
1
Aquellos que enfrentan un error al ejecutar el curlcomando, intenten esto: docs.docker.com/compose/install/#install-compose
Deepak Sharma
1
@DeepakSharma Tienes que ejecutar los comandos curl y chmod como usuario root (o usar sudo)
lvthillo
51

Resolví el problema actualizando docker-compose.

Seguí los pasos a continuación para actualizar docker-compose en ubuntu16.04

paso 1:

$which docker-compose
/usr/bin/docker-compose

paso 2:

$sudo rm /usr/bin/docker-compose

paso 3:

curl -L https://github.com/docker/compose/releases/download/1.20.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose

paso 4:

chmod +x /usr/bin/docker-compose
Thavaprakash Swaminathan
fuente
Esto funcionó bien para mí en Elementary OS Loki (0.4.1).
J. Afarian
6
Dado que la versión de la ventana acoplable cambia con frecuencia, busque aquí la instalación de la última versión de la ventana
DrB
1
La versión que obtenía de apt-get era 1.17, también tenía este problema (Linux Mint 19). Descargué 1.24.1 de manera similar a como se presentan estos pasos, parece estar funcionando. ¡Gracias!
Will Buck
1
Después de eliminarlo, sudo apt install docker-composedígame que ya tengo la versión y docker-compose updígame que no tengo instalado docker-compose. ¿Por qué no están usando apt? Ahora tengo dos problemas.
Ambroise Rabier
14

Si la versión de su archivo es 3.7 y obtiene el siguiente error:

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.

Aquí está la solución:

(1) sudo apt-get remove docker-composeOsudo 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

Espero que esto resuelva el problema.

dPac
fuente
4

Si usa linux / ubuntu , esto puede ser obvio, pero tenga cuidado de ejecutar como root, por ejemplo

docker-compose -v

Da

docker-compose version 1.8.0, build unknown

vs

sudo docker-compose -v 

Da

docker-compose version 1.17.1, build 6d101fb

También asegúrese de que docker-compose y docker-machine estén actualizados como indica @lvthillo

Glen Thompson
fuente
Esta debería ser la respuesta correcta. Estoy en Ubuntu, tuve que usar el comando
SUDO
sudo docker-compose -v me da la versión 1.8.0 de docker-compose, compilación desconocida
Julien
¿Eso es con sudo?
Glen Thompson
-1. Sudo es malo. Aquí hay una alternativa: docs.docker.com/install/linux/linux-postinstall/…
Ligemer
Buen añadido, aunque no diría que es "malo". Siéntase libre de editar la respuesta para incluirla como una adición.
Glen Thompson
2

Lo había hecho docker-compose --versionantes de implementar la solución de lvthillo y todavía aparecían versiones desactualizadas. Resultó que necesitaba vaciar la lista hash a la que se aferraba mi shell bash. hash -r... espero que sea útil para alguien más

brandon
fuente
2

intente desinstalar la versión anterior y vuelva a instalar.

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

debería imprimir

docker-compose --version
docker-compose version 1.22.0, build 1719ceb
QWERTY
fuente
3
¿Por qué reiniciar la máquina solo porque descargó un archivo?
Soren Bjornstad
1

No podemos decirle sin ver el error en particular, primero verifíquelo ejecutando este comando

docker build . cuando recibiste el error, búscalo en Google, en mi caso fue el error de permiso cuando lo intenté con sudo funcionó.

Espero que te ayude

usuario10538706
fuente
0

En osx 10.12.6 sierra

Pasos para v1.22 o superior

Tuve un problema / incompatibilidad específico en el que no quería actualizar completamente la ventana acoplable. Actualmente estoy atascado en la ventana acoplable 17.06.0-ce-mac18. Así que simplemente quería actualizar docker-compose y nada más.

Mis pasos:

  • Identificar la ubicación de docker-compose: which docker-compose
  • Identificar la versión de docker-compose: docker-compose --version=docker-compose version 1.14.0, build c7bdf9e
  • copia de seguridad anterior docker-compose ?: mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-bak
  • reemplazar con curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • si necesita determinar la última versión, simplemente consulte https://github.com/docker/compose/releases y reemplace la versión anterior con la última.
  • verificar versión: docker-compose --version=docker-compose version 1.22.0, build f46880f
wired00
fuente