La versione in "./docker-compose.yml" non è supportata. Potresti visualizzare questo errore perché stai utilizzando la versione del file Compose sbagliata


92

Ecco il mio file docker-compose.yml:

version: '3.1'

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

secrets:
  id: my_password

Se corro $ docker-compose-upottengo questo:

La versione in "./docker-compose.yml" non è supportata. Potresti visualizzare questo errore perché stai utilizzando la versione del file Compose sbagliata.

La mia versione docker-compose:

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

Cosa c'è che non va qui? La mia versione docker-compose non dovrebbe supportare la v3.1 della specifica docker-compose.yml (secondo le note di rilascio , lo fa)?


qual è la versione del tuo docker (non docker compose)?
lvthillo

Docker versione 1.13.0, build 49bf474
Eric

proprio docker-composee nondocker compose
Abdou Tahiri

@AbdouTahiri CLI is docker-composebut Docker Composeis the technology .. docs.docker.com/compose
lvthillo

4
Affrontare lo stesso problema con la versione "3.6". La mia finestra mobile è18.03.0-ce, build 0520e24
Rajeev Ranjan

Risposte:


92

Stai facendo tutto bene e dovrebbe funzionare. Ma c'era un bug in docker-compose 1.11.0 che non riconosceva come valido il formato di file 3.1. (3.0 funziona).

Esiste già una nuova versione di docker-compose (1.11.1) che include la correzione del bug:

Correzioni di bug

Risolto un bug per il quale il formato di file 3.1 non veniva riconosciuto come valido dal parser di Compose

Quindi consiglierei di aggiornare la tua versione docker-compose se desideri utilizzare il formato file 3.1.

Al momento il modo più sicuro per aggiornare docker-compose è eliminarlo e reinstallarlo.

rm /usr/local/bin/docker-compose

Reinstalla:

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

Ora non c'è più un errore sul formato del file. (Non ho provato con il tuo .yml).

docker-compose up
Starting compose_a_1
Starting compose_b_1

3
Grazie. Per qualche motivo, la tua dose di cmd curl non funziona per me in Ubuntu 16.04. Ho quindi aggiornato all'ultima versione docker-compose seguendo la guida nel sito ufficiale qui. docs.docker.com/compose/install , che è più o meno lo stesso di cui sopra. Ma in curl cmd, il ">" cambia in "-o".
zhihong

8
Il bug affligge anche la versione 1.8.0; la versione 1.16.1 è disponibile e ha funzionato perfettamente su Ubuntu 16.04. Basta correggere il componente della versione del percorso sopra, non è possibile incollarlo chiaramente in questo commento a causa delle virgolette: /
chrisinmtown

Non so il motivo ma il curlcomando non viene eseguito. .. dice permesso negato.
Deepak Sharma

1
Coloro che si trovano ad affrontare un errore nell'esecuzione del curlcomando, prova questo: docs.docker.com/compose/install/#install-compose
Deepak Sharma

1
@DeepakSharma Devi eseguire i comandi curl e chmod come utente root (o usare sudo)
lvthillo

53

Ho risolto il problema aggiornando docker-compose.

Seguono i passaggi seguenti per aggiornare docker-compose in ubuntu16.04

passo 1:

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

passo 2:

$sudo rm /usr/bin/docker-compose

step3:

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

Questo ha funzionato bene per me su Elementary OS Loki (0.4.1).
J. Afarian

6
Poiché la versione di docker cambia spesso cerca qui l'installazione dell'ultima versione di
docker

1
La versione che stavo ottenendo da apt-get era la 1.17, anch'essa aveva questo problema (Linux Mint 19). Ho scaricato 1.24.1 in modo simile a come sono disposti questi passaggi, sembra funzionare. Grazie!
Will Buck

1
Dopo averlo eliminato, sudo apt install docker-composedimmi che ho già la versione e docker-compose updimmi che non ho docker-compose installato. Perché ragazzi non usate apt? Adesso ho due problemi.
Ambroise Rabier

18

Se la versione del tuo file è 3.7 e ottieni il seguente errore:

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.

Ecco la soluzione: -

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

Spero che questo risolva il problema.


potresti voler controllare l'ultima versione su github.com/docker/compose/releases , in questo momento la versione è 1.27.4
FrankZhu

4

Se usi linux / ubuntu , questo è forse ovvio ma fai attenzione a eseguire come root es

docker-compose -v

docker-compose version 1.8.0, build unknown

vs

sudo docker-compose -v 

docker-compose version 1.17.1, build 6d101fb

Assicurati inoltre che docker-compose e docker-machine siano aggiornati come afferma @lvthillo


Questa dovrebbe essere la risposta giusta. Sono in Ubuntu, ho dovuto usare il comando SUDO per lavorare
brunoramonalmeida

sudo docker-compose -v mi dà docker-compose versione 1.8.0, build sconosciuta
Julien

È con sudo?
Glen Thompson

-1. Sudo è cattivo. Ecco un'alternativa: docs.docker.com/install/linux/linux-postinstall/…
Ligemer

Bella aggiunta, anche se non direi che è "cattiva". Sentiti libero di modificare la risposta per includerla come aggiunta.
Glen Thompson

2

Avevo fatto docker-compose --versionprima di implementare la soluzione di lvthillo e stavo ancora ottenendo versioni obsolete. Si è scoperto che avevo bisogno di svuotare la lista hash su cui il mio shell bash stava tenendo. hash -r... spero che sia utile per qualcun altro


2

prova a disinstallare la vecchia versione e reinstallare.

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

dovrebbe stampare

docker-compose --version
docker-compose version 1.22.0, build 1719ceb

3
Perché riavviare la macchina solo perché hai scaricato un file?
Soren Bjornstad

1

Non possiamo essere in grado di dirti senza guardare l'errore particolare verificarlo prima eseguendo questo comando

docker build . quando hai ricevuto l'errore, cercalo su google nel mio caso è stato l'errore di autorizzazione quando l'ho provato con sudo ha funzionato.

Spero che ti possa aiutare


0

Su osx 10.12.6 sierra

Passaggi per v1.22 o versioni successive

Ho avuto un problema specifico / incompatibilità in cui non volevo aggiornare completamente la finestra mobile. Al momento sono bloccato sulla finestra mobile 17.06.0-ce-mac18. Quindi volevo semplicemente aggiornare docker-compose e nient'altro.

I miei passi:

  • Identifica la posizione di docker-compose: which docker-compose
  • Identifica la versione docker-compose: docker-compose --version=docker-compose version 1.14.0, build c7bdf9e
  • backup precedente docker-compose ?: mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-bak
  • sostituirlo con curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • se è necessario determinare la versione più recente, basta controllare https://github.com/docker/compose/releases e sostituire la versione precedente con la più recente.
  • verifica versione: docker-compose --version=docker-compose version 1.22.0, build f46880f
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.