Cómo actualizar docker-compose a la última versión


102

He instalado docker-compose usando el comando

sudo apt install docker-compose

Instaló docker-compose versión 1.8.0 y compilación desconocida

Necesito la última versión de docker-compose o al menos una versión de 1.9.0

¿Alguien puede decirme qué enfoque debo tomar para actualizarlo o desinstalar y reinstalar la última versión?

He comprobado el sitio web de Docker y puedo ver que lo recomiendan para instalar la última versión '

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

Pero antes de eso, tengo que desinstalar la versión actual, lo cual se puede hacer usando el comando

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

pero esto solo se puede usar cuando la instalación se realizó usando curl. No estoy seguro de si la instalación se realizó mediante curl como he usado

sudo apt install docker-compose

Déjeme saber qué debo hacer ahora para desinstalar y volver a instalar el docker-compose.

Respuestas:


131

Primero, elimine la versión anterior :

Si se instala a través de apt-get

sudo apt-get remove docker-compose

Si se instala a través de curl

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

Si se instala a través de pip

pip uninstall docker-compose

Luego, busque la versión más reciente en la página de lanzamiento en GitHub o curling la API si la ha jqinstalado (gracias a dragon788 y frbl por esta mejora):

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

Finalmente, descargue a su ubicación favorita accesible a $ PATH y configure los permisos:

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

2
intente actualizar la ruta en / usr / local / bin / docker-compose y luego ejecutesudo chmod +x /usr/bin/docker-compose
Raj Kumar Goyal

2
No es necesario mover el archivo. El /usr/local/bincamino ya debería estar adentro $PATH. Justo chmoden su lugar. Respuesta actualizada para reflejar esto.
Gold

4
Probablemente quieras hacer en sudo chmod 755 $DESTINATIONlugar de solo+x
Neo

2
Neo, buen partido. Por lo general, solo ajusto las permanentes a mis necesidades en caso de que otras cosas hayan configurado las cosas como las necesitan. Pero aquí estamos descargando un archivo nuevo. Establecer todas las permanentes tiene sentido.
Oro

2
@Rebar ¿Puede ser más específico sobre a qué desea actualizar la ruta? /usr/local/bines un lugar bastante estándar para colocar binarios globales no administrados por el sistema de empaquetado. La respuesta también menciona la especificación de "su ubicación accesible a $ PATH favorita", lo que indica ajustar si su ubicación $PATHes diferente.
Eric M. Johnson

37

La forma más fácil de tener una solución permanente y sostenible para la instalación de Docker Compose y la forma de actualizarla es simplemente usar el administrador de paquetes pip con:

pip install docker-compose

Estaba buscando una buena solución para el desagradable problema de "cómo actualizar al último número de versión", que apareció después de haber leído los documentos oficiales, y lo encontró ocasionalmente, solo eche un vistazo al pip de docker-compose paquete : debe reflejar (principalmente) el número actual de la última versión de Docker Compose publicada .

¡Un administrador de paquetes es siempre la mejor solución si se trata de administrar instalaciones de software! Así que simplemente te abstraes de manejar las versiones por tu cuenta.


2
+1 gran respuesta. Antes: tenía la versión docker-compose: docker-compose versión 1.21.2, build a133471 Entonces, para actualizar a la última versión que no es RC, encontré que esto funcionaba para actualizar: 1) apt install python-pippara instalar PIP y luego pip install docker-composepara instalar la última y luego para verificar la versión: docker-compose --versionque me dio: docker-compose versión 1.23.2, build 1110ad0
therobyouknow

pip install docker-composeme estaba dando "Requisito ya satisfecho: docker-compose", así que tenía que hacerlo apt-get purge docker-composey hash -d docker-composeluego pip install docker-composeobtener docker-compose 1.24 en Ubuntu 18.04.
krubo

Después de instalar docker-compose por pip, encontré este error:ImportError: cannot import name 'Context'
Benyamin Jafari

Entonces, para lidiar con este error, reinstalo el dockerpaquete porpip
Benyamin Jafari

17

Según la respuesta de @ eric-johnson, actualmente estoy usando esto en un script:

#!/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)

toma la última versión de la api de GitHub.


Me encontré con un error en la cuarta línea zsh: parse error near
:)

acabo de probarlo aquí, pero parece funcionar bien (debian 10 con zsh). ¿Seguro que lo copiaste correctamente?
Frbl

Intente citar las URL dos veces, ya que a veces el shell puede resultar un poco complicado.
dragon788

15

Si los métodos anteriores no funcionan para usted, consulte esta respuesta: 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

3
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden dejar de ser válidas si cambia la página enlazada. - De la crítica
Luuklag

@Luuklag Actualizó la respuesta. Gracias por la sugerencia
kpratihast

Parece ser una opción extremadamente lenta
TeoTN

10

Si lo intentó sudo apt-get remove docker-composey lo consiguió E: Unable to locate package docker-compose, pruebe este método:

Este comando debe devolver un resultado para verificar que esté instalado aquí:

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

Elimina la versión anterior:

sudo rm -rf docker-compose

Descargue la última versión (consulte el repositorio oficial: 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

( reemplace 1.24.0 si es necesario )

Finalmente, aplique permisos ejecutables al binario:

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

Ver versión:

docker-compose -v

5

Aquí hay otro delineador para instalar la última versión de docker-compose usando curl y sed.

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

2

use esto desde la línea de comando: 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

Anote la última versión de lanzamiento

Aplicar permisos ejecutables al binario:

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

Luego prueba la versión:

$ docker-compose --version

1

Después de buscar muchas formas de realizar esto, terminé usando jq, y espero poder expandirlo para manejar otros repositorios más allá de Docker-Compose sin demasiado trabajo.

# 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

1

Si tiene homebrew también puede instalarlo a través de brew

$ brew install docker-compose

Esta es una buena forma de instalar en un sistema Mac OS


1

En el escritorio de ubuntu 18.04.2, elimino el 'local' de la ruta cuando uso el comando curl para instalar el paquete y me funciona. Vea la respuesta anterior de Kshitij.


1

Si instaló con pip, para actualizar solo puede usar:

 pip install --upgrade docker-compose

o como afirma Mariyo con pip3 explícitamente:

 pip3 install --upgrade docker-compose

en mi caso fuepip3 install --upgrade docker-compose
Mariyo

1

Estaba intentando instalar docker-compose en "Ubuntu 16.04.5 LTS" pero después de instalarlo así:

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

Yo estaba consiguiendo:

-bash: / usr / local / bin / docker-compose: Permiso denegado

y mientras lo usaba con sudo obtenía:

sudo: docker-compose: comando no encontrado

Así que aquí están los pasos que tomé y resolví mi problema:

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.