So aktualisieren Sie Docker-Compose auf die neueste Version

105

Ich habe Docker-Compose mit dem Befehl installiert

sudo apt install docker-compose

Es installierte Docker-Compose Version 1.8.0 und Build unbekannt

Ich benötige die neueste Version von Docker-Compose oder mindestens eine Version von 1.9.0

Kann mir bitte jemand mitteilen, wie ich es aktualisieren oder die neueste Version deinstallieren und neu installieren soll?

Ich habe die Docker-Website überprüft und kann feststellen, dass sie dies empfehlen, um die neueste Version zu installieren. '

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

Aber vorher muss ich die vorliegende Version deinstallieren, was mit dem Befehl möglich ist

sudo rm /usr/local/bin/docker-compose

Dies kann jedoch nur verwendet werden, wenn die Installation mit Curl durchgeführt wurde. Ich bin nicht sicher, ob die Installation von Curl durchgeführt wurde, wie ich es verwendet habe

sudo apt install docker-compose

Bitte lassen Sie mich wissen, was ich jetzt tun soll, um Docker-Compose zu deinstallieren und neu zu installieren.

Sam_2207
quelle

Antworten:

140

Zuerst entfernen Sie die alte Version :

Bei Installation über apt-get

sudo apt-get remove docker-compose

Bei Installation über Curl

sudo rm /usr/local/bin/docker-compose

Bei Installation über Pip

pip uninstall docker-compose

Dann finden Sie die neueste Version auf der Release-Seite von GitHub oder indem Sie die API zusammenrollen, wenn Sie sie jqinstalliert haben (danke an dragon788 und frbl für diese Verbesserung):

VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)

Schließlich herunterladen , um Ihre Lieblinge $ PATH-günstige Lage und Berechtigungen:

DESTINATION=/usr/local/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION
sudo chmod 755 $DESTINATION
Eric M. Johnson
quelle
2
Versuchen Sie, den Pfad in / usr / local / bin / docker-compose zu aktualisieren und führen Sie ihn dann aussudo chmod +x /usr/bin/docker-compose
Raj Kumar Goyal
2
Die Datei muss nicht verschoben werden. Der /usr/local/binPfad sollte $PATHbereits vorhanden sein. Einfach chmodan Ort und Stelle. Antwort aktualisiert, um dies widerzuspiegeln.
Gold
4
Sie möchten wahrscheinlich sudo chmod 755 $DESTINATIONstatt nur+x
Neo
2
Neo, guter Fang. Normalerweise passe ich Dauerwellen nur an meine Bedürfnisse an, falls andere Dinge die Dinge so eingestellt haben, wie sie es brauchen. Aber hier laden wir eine neue Datei herunter. Das Einstellen aller Dauerwellen ist sinnvoll.
Gold
2
@Rebar Können Sie bitte genauer angeben, auf was der Pfad aktualisiert werden soll? /usr/local/binist ein ziemlich normaler Ort, um globale Binärdateien zu platzieren, die nicht vom Verpackungssystem verwaltet werden. In der Antwort wird auch die Angabe "Ihr bevorzugter $ PATH-zugänglicher Ort" erwähnt, was darauf hinweist, dass Sie $PATHsich anpassen müssen, wenn Ihr Standort anders ist.
Eric M. Johnson
38

Der einfachste Weg, eine dauerhafte und nachhaltige Lösung für die Docker Compose-Installation zu finden und diese zu aktualisieren, besteht darin, einfach den Paketmanager pip zu verwenden mit:

pip install docker-compose

Ich war auf der Suche nach einer guten Lösung für das hässliche Problem "Upgrade auf die neueste Versionsnummer", das auftrat, nachdem Sie die offiziellen Dokumente gelesen und nur gelegentlich gefunden hatten. Schauen Sie sich einfach die Docker-Compose-Pip an Paket - Es sollte (meistens) die aktuelle Nummer der neuesten veröffentlichten Docker Compose-Version widerspiegeln .

Ein Paketmanager ist immer die beste Lösung, wenn es um die Verwaltung von Softwareinstallationen geht! Sie abstrahieren also nur davon, die Versionen selbst zu handhaben.

jonashackt
quelle
2
+1 tolle Antwort. Vorher: Ich hatte Docker-Compose-Version: Docker-Compose-Version 1.21.2, Build a133471. Um auf die neueste Nicht-RC-Version zu aktualisieren, funktionierte dies, um ein Upgrade durchzuführen: 1) apt install python-pipPIP installieren, dann pip install docker-composedie neueste und installieren dann, um die Version zu überprüfen: docker-compose --versiondie mir gab: Docker-Compose-Version 1.23.2, Build 1110ad0
therobyouknow
pip install docker-composegab mir "Voraussetzung bereits erfüllt: Docker-Compose", also musste ich tun apt-get purge docker-composeund hash -d docker-composedann pip install docker-composeDocker-Compose 1.24 unter Ubuntu 18.04 bekommen.
Krubo
Nach der Installation von Docker-Compose per Pip trat folgender Fehler auf:ImportError: cannot import name 'Context'
Benyamin Jafari
Um diesen Fehler zu beheben, installiere ich das dockerPaket vonpip
Benyamin Jafari
17

Basierend auf der Antwort von @ eric-johnson verwende ich dies derzeit in einem Skript:

#!/bin/bash
compose_version=$(curl https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)
output='/usr/local/bin/docker-compose'
curl -L https://github.com/docker/compose/releases/download/$compose_version/docker-compose-$(uname -s)-$(uname -m) -o $output
chmod +x $output
echo $(docker-compose --version)

Es greift auf die neueste Version der GitHub-API zu.

frbl
quelle
Ich bin auf einen Fehler in der 4. Zeile gestoßen zsh: parse error near :) '`
Benyamin Jafari
habe es gerade hier getestet, aber es scheint gut zu funktionieren (debian 10 mit zsh). Bist du sicher, dass du es richtig kopiert hast?
1.
Versuchen Sie, die URLs doppelt zu zitieren, da die Shell manchmal etwas griffig wird.
dragon788
15

Wenn die oben genannten Methoden bei Ihnen nicht funktionieren, lesen Sie diese Antwort: https://stackoverflow.com/a/40554985

curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" > ./docker-compose
sudo mv ./docker-compose /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose
kpratihast
quelle
3
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - Von der Überprüfung
Luuklag
@Luuklag Die Antwort wurde aktualisiert. Vielen Dank für den Vorschlag
kpratihast
Es scheint eine extrem langsame Option zu sein
TeoTN
11

Wenn Sie es versucht sudo apt-get remove docker-composehaben E: Unable to locate package docker-compose, versuchen Sie es mit folgender Methode:

Dieser Befehl muss ein Ergebnis zurückgeben, um zu überprüfen, ob es hier installiert ist:

ls -l /usr/local/bin/docker-compose

Entfernen Sie die alte Version:

sudo rm -rf docker-compose

Laden Sie die letzte Version herunter (siehe offizielles Repo: Docker / Compose / Releases ):

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

( bei Bedarf 1.24.0 ersetzen )

Wenden Sie abschließend ausführbare Berechtigungen auf die Binärdatei an:

sudo chmod +x /usr/local/bin/docker-compose

Version prüfen:

docker-compose -v
DependencyHell
quelle
5

Hier ist ein weiterer Oneliner, um die neueste Version von Docker-Compose mit Curl und Sed zu installieren.

curl -L "https://github.com/docker/compose/releases/download/`curl -fsSLI -o /dev/null -w %{url_effective} https://github.com/docker/compose/releases/latest | sed 's#.*tag/##g' && echo`/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
Jakob Eriksson
quelle
2

Verwenden Sie dies über die Befehlszeile: 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

Notieren Sie sich die neueste Release-Version

Wenden Sie ausführbare Berechtigungen auf die Binärdatei an:

sudo chmod +x /usr/local/bin/docker-compose

Dann Testversion:

$ docker-compose --version
Md. Tanvir Rahaman
quelle
2

Ich habe versucht, Docker-Compose auf "Ubuntu 16.04.5 LTS" zu installieren, aber nach der Installation wie folgt:

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Ich bekam:

-bash: / usr / local / bin / docker-compose: Berechtigung verweigert

und während ich es mit sudo benutzte, bekam ich:

sudo: docker-compose: Befehl nicht gefunden

Hier sind die Schritte, die ich unternommen und mein Problem gelöst habe:

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose
ArminMz
quelle
1

Nachdem ich mir viele Möglichkeiten angesehen hatte, dies durchzuführen, habe ich es letztendlich verwendet jqund hoffe, dass ich es erweitern kann, um andere Repos außerhalb von Docker-Compose ohne allzu viel Arbeit zu verarbeiten.

# If you have jq installed this will automatically find the latest release binary for your architecture and download it
curl --silent "https://api.github.com/repos/docker/compose/releases/latest" | jq --arg PLATFORM_ARCH "$(echo `uname -s`-`uname -m`)" -r '.assets[] | select(.name | endswith($PLATFORM_ARCH)).browser_download_url' | xargs sudo curl -L -o /usr/local/bin/docker-compose --url
dragon788
quelle
1

Wenn Sie Homebrew haben, können Sie auch über installieren brew

$ brew install docker-compose

Dies ist eine gute Möglichkeit, um auf einem Mac OS-System zu installieren

Kristian Mandrup
quelle
1

Auf Ubuntu Desktop 18.04.2 wurde das 'local' aus dem Pfad entfernt, wenn das Paket mit dem Befehl curl installiert wurde, und es funktioniert für mich. Siehe obige Antwort von Kshitij.

Harry
quelle
1

Wenn Sie mit pip installiert haben, können Sie zum Upgrade einfach Folgendes verwenden:

 pip install --upgrade docker-compose

oder wie Mariyo mit pip3 ausdrücklich sagt:

 pip3 install --upgrade docker-compose
Branimir Valentić
quelle
in meinem Fall war espip3 install --upgrade docker-compose
Mariyo