Die Version in "./docker-compose.yml" wird nicht unterstützt. Möglicherweise wird dieser Fehler angezeigt, weil Sie die falsche Version der Compose-Datei verwenden

87

Hier ist meine Datei docker-compose.yml:

version: '3.1'

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

secrets:
  id: my_password

Wenn ich renne, $ docker-compose-upbekomme ich folgendes:

Die Version in "./docker-compose.yml" wird nicht unterstützt. Möglicherweise wird dieser Fehler angezeigt, weil Sie die falsche Version der Compose-Datei verwenden.

Meine Docker-Compose-Version:

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

Was ist hier los? Sollte nicht meine Docker-compose Version Unterstützung v3.1 der Docker-compose.yml Spezifikation (gemäß den Release Notes , es tut)?

Eric
quelle
Was ist die Version Ihres Dockers (nicht Docker komponieren)?
lvthillo
Docker Version 1.13.0, Build 49bf474
Eric
es ist docker-composeund nichtdocker compose
Abdou Tahiri
@AbdouTahiri CLI ist docker-composeaber Docker Composeist die Technologie .. docs.docker.com/compose
lvthillo
4
Das gleiche Problem mit der Version "3.6". Mein Hafenarbeiter ist18.03.0-ce, build 0520e24
Rajeev Ranjan

Antworten:

88

Sie machen alles richtig und es sollte funktionieren. Es gab jedoch einen Fehler in Docker-Compose 1.11.0, der das Dateiformat 3.1 nicht als gültig erkannte. (3.0 funktioniert).

Es gibt bereits eine neue Version von Docker-Compose (1.11.1), die den Bugfix enthält:

Fehlerbehebung

Es wurde ein Fehler behoben, durch den das 3.1-Dateiformat vom Compose-Parser nicht als gültig erkannt wurde

Daher würde ich empfehlen, Ihre Docker-Compose-Version zu aktualisieren, wenn Sie das Dateiformat 3.1 verwenden möchten.

Im Moment ist es am sichersten, Docker-Compose zu aktualisieren, indem Sie es löschen und neu installieren.

rm /usr/local/bin/docker-compose

Neu installieren:

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

Jetzt gibt es keinen Fehler mehr im Dateiformat. (Ich habe nicht mit Ihrer .yml getestet).

docker-compose up
Starting compose_a_1
Starting compose_b_1
lvthillo
quelle
3
Vielen Dank. Aus irgendeinem Grund funktioniert Ihre Curl-Cmd-Dosis in Ubuntu 16.04 bei mir nicht. Ich habe dann auf die neueste Docker-Compose-Version aktualisiert, indem ich der Anleitung auf der offiziellen Website hier gefolgt bin. docs.docker.com/compose/install , was mehr oder weniger dem oben genannten entspricht. Aber in curl cmd ändert sich das ">" zu "-o".
Zhihong
8
Fehler betrifft auch Version 1.8.0; Version 1.16.1 ist verfügbar und hat unter Ubuntu 16.04 perfekt funktioniert.
Korrigieren Sie
Ich kenne den Grund nicht, aber der curlBefehl wird nicht ausgeführt. .. sagt Erlaubnis verweigert.
Deepak Sharma
1
Diejenigen, die Fehler beim Ausführen des curlBefehls haben, versuchen dies: docs.docker.com/compose/install/#install-compose
Deepak Sharma
1
@ DeepakSharma Sie müssen die Befehle curl und chmod als Root-Benutzer ausführen (oder sudo verwenden)
lvthillo
50

Ich habe das Problem durch ein Upgrade von Docker-Compose behoben.

Befolgen Sie die nachstehenden Schritte, um Docker-Compose in Ubuntu16.04 zu aktualisieren

Schritt 1:

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

Schritt 2:

$sudo rm /usr/bin/docker-compose

Schritt 3:

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

Schritt 4:

chmod +x /usr/bin/docker-compose
Thavaprakash Swaminathan
quelle
Dies funktionierte gut für mich unter Elementary OS Loki (0.4.1).
J. Afarian
6
Da die Version von Docker häufig geändert wird, suchen Sie hier nach der Installation der neuesten Docker-Version github.com/docker/compose/releases
DrB
1
Die Version, die ich von apt-get bekam, war 1.17, es gab auch dieses Problem (Linux Mint 19). Ich habe 1.24.1 heruntergeladen, ähnlich wie diese Schritte aussehen, scheint zu funktionieren. Vielen Dank!
Will Buck
1
sudo apt install docker-composeSagen Sie mir nach dem Löschen, dass ich die Version bereits habe und docker-compose updass kein Docker-Compose installiert ist. Warum benutzt ihr apt nicht? Ich habe jetzt zwei Probleme.
Ambroise Rabier
12

Wenn Ihre Dateiversion 3.7 ist und Sie den folgenden Fehler erhalten:

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.

Hier ist die Lösung: -

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

Ich hoffe, dies wird dieses Problem beheben.

dPac
quelle
4

Wenn Sie Linux / Ubuntu verwenden , ist dies möglicherweise offensichtlich, aber achten Sie darauf, dass Sie als Root ausgeführt werden, z

docker-compose -v

Gibt

docker-compose version 1.8.0, build unknown

vs.

sudo docker-compose -v 

Gibt

docker-compose version 1.17.1, build 6d101fb

Auch stellen Sie sicher , Docker-compose und Docker-Maschine ist auf dem neuesten Stand , wie @lvthillo Staaten

Glen Thompson
quelle
Dies sollte die richtige Antwort sein. Ich bin in Ubuntu, ich musste den SUDO-Befehl zum Arbeiten verwenden
brunoramonalmeida
sudo docker-compose -v gibt mir docker-compose version 1.8.0, build unknown
Julien
Ist das mit sudo?
Glen Thompson
-1. Sudo ist schlecht. Hier ist eine Alternative: docs.docker.com/install/linux/linux-postinstall/…
Ligemer
Nettes Hinzufügen, obwohl ich nicht sagen würde, dass es "schlecht" ist. Fühlen Sie sich frei, die Antwort zu bearbeiten, um sie als Ergänzung aufzunehmen.
Glen Thompson
2

Ich hatte es docker-compose --versionvor der Implementierung von lvthillos Lösung getan und es wurden immer noch veraltete Versionen angezeigt. Es stellte sich heraus, dass ich die Hash-Liste leeren musste, an der sich meine Bash-Shell festhielt. hash -r... hoffe, das ist nützlich für jemand anderen

Brandon
quelle
2

Versuchen Sie, die alte Version zu deinstallieren und neu zu installieren.

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

sollte ausdrucken

docker-compose --version
docker-compose version 1.22.0, build 1719ceb
QWERTY
quelle
3
Warum den Computer neu starten, nur weil Sie eine Datei heruntergeladen haben?
Soren Bjornstad
1

Wir können es Ihnen nicht sagen, ohne den bestimmten Fehler zu beobachten. Überprüfen Sie ihn zuerst, indem Sie diesen Befehl ausführen

docker build . Wenn Sie den Fehler erhalten haben, suchen Sie ihn in Google. In meinem Fall war es der Berechtigungsfehler, als ich ihn mit sudo ausprobierte. Es funktionierte.

Hoffe es wird dir helfen

user10538706
quelle
0

Auf osx 10.12.6 sierra

Schritte für Version 1.22 oder höher

Ich hatte ein bestimmtes Problem / eine bestimmte Inkompatibilität, bei der ich Docker nicht vollständig aktualisieren wollte. Ich stecke derzeit auf Docker 17.06.0-ce-mac18 fest. Also wollte ich nur Docker-Compose aktualisieren und sonst nichts.

Meine Schritte:

  • Identifizieren Sie den Speicherort von Docker-Compose: which docker-compose
  • Identifizieren Sie die Docker-Compose-Version: docker-compose --version=docker-compose version 1.14.0, build c7bdf9e
  • Backup vorherigen Docker-Compose?: mv /usr/local/bin/docker-compose /usr/local/bin/docker-compose-bak
  • ersetzen mit curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  • Wenn Sie die neueste Version ermitteln müssen, überprüfen Sie einfach https://github.com/docker/compose/releases und ersetzen Sie die obige Version durch die neueste.
  • Version überprüfen: docker-compose --version=docker-compose version 1.22.0, build f46880f
wired00
quelle