Як оновити docker-compose до останньої версії


102

Я встановив docker-compose за допомогою команди

sudo apt install docker-compose

Він встановив версію docker-compose версії 1.8.0 та збірку невідомо

Мені потрібна остання версія docker-compose або принаймні версія 1.9.0

Хто-небудь, будь ласка, дайте мені знати, який підхід я маю застосувати для його оновлення або видалення та перевстановлення останньої версії.

Я перевірив веб-сайт докера і бачу, що вони рекомендують це для встановлення останньої версії '

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

Але перед цим я маю видалити поточну версію, що можна зробити за допомогою команди

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

але цим можна скористатися лише тоді, коли установка була виконана за допомогою curl. Я не впевнений, чи встановлення було виконано за допомогою curl, як я використовував

sudo apt install docker-compose

Будь ласка, дайте мені знати, що мені робити зараз, щоб видалити та повторно встановити docker-compose.

Відповіді:


131

Спочатку видаліть стару версію :

Якщо встановлено через apt-get

sudo apt-get remove docker-compose

Якщо встановлено через curl

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

Якщо встановлено через pip

pip uninstall docker-compose

Тоді знайдіть найновішу версію на сторінці випуску в GitHub або скрутіть API, якщо ви jqвстановили (завдяки dragon788 та frbl за це вдосконалення):

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

Нарешті, завантажте до свого улюбленого місця, доступного для $ PATH, і встановіть дозволи:

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
спробуйте оновити шлях у / usr / local / bin / docker-compose, а потім запустітьsudo chmod +x /usr/bin/docker-compose
Raj Kumar Goyal

2
Не потрібно переміщувати файл. /usr/local/binШлях повинен бути $PATHвже. Просто chmodна місці. Відповідь оновлена, щоб відобразити це.
Золото

4
Ви, мабуть, хочете зробити sudo chmod 755 $DESTINATIONзамість просто+x
Нео

2
Нео, хороший улов. Я, як правило, просто пристосовую хімічну завивку до своїх потреб, якщо інші речі встановлюють речі так, як їм це потрібно. Але тут ми завантажуємо новий файл. Встановлення всіх хімічних завивок має сенс.
Золото

2
@Rebar Чи можете ви, будь ласка, конкретніше визначити, до чого ви хочете оновити шлях? /usr/local/binце досить стандартне місце для розміщення глобальних двійкових файлів, якими не керує пакувальна система. У відповіді також згадується вказівка ​​"улюблене місце, доступне для $ PATH", що вказує на коригування, якщо ваше місце $PATHвідрізняється.
Ерік М. Джонсон,

37

Найпростіший спосіб отримати постійне та стійке рішення для установки Docker Compose та спосіб її оновлення - це просто використовувати піп менеджера пакетів із:

pip install docker-compose

Я шукав хорошого рішення для потворної проблеми "як оновити до останньої версії", яка з'явилася після того, як ви прочитали офіційні документи - і просто знайшли її зрідка - просто подивіться на docker-compose pip пакунок - він повинен відображати (переважно) поточний номер останньої версії Docker Compose .

Менеджер пакетів - це завжди найкраще рішення, якщо мова йде про управління інсталяціями програмного забезпечення! Отже, ви просто абстрагуєтесь від самостійної роботи з версіями.


2
+1 чудова відповідь. Раніше: у мене була версія docker-compose: docker-compose версія 1.21.2, збірка a133471 Тож для оновлення до останньої версії, що не є RC, я виявив, що це працює для оновлення: 1) apt install python-pipвстановити PIP, потім pip install docker-composeвстановити останню та потім перевірити версію: docker-compose --versionяка дала мені: docker-compose версія 1.23.2, збірка 1110ad0
therobyouknow

pip install docker-composeдавав мені "Вимогу вже задоволено: docker-compose", тому я повинен був зробити, apt-get purge docker-composeа hash -d docker-composeпотім pip install docker-composeотримати docker-compose 1.24 на Ubuntu 18.04.
krubo

Після встановлення docker-compose by pip, я зіткнувся з цією помилкою:ImportError: cannot import name 'Context'
Бенямін Джафарі

Отже, щоб усунути цю помилку, я перевстановлюю dockerпакетpip
Бенямін Джафарі

17

На основі відповіді @ eric-johnson, зараз я використовую це у сценарії:

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

він захоплює останню версію з GitHub api.


Я зіткнувся з помилкою в 4-му рядку zsh: parse error near
:)

просто перевірив тут, але, здається, працює нормально (debian 10 з zsh). Ви впевнені, що скопіювали його правильно?
frbl

Спробуйте подвійне цитування URL-адрес, оскільки іноді оболонка може трохи захопити.
dragon788

15

Якщо вищезазначені методи не працюють для вас, зверніться до цієї відповіді: 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
Хоча це посилання може відповісти на питання, краще включити сюди основні частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
Luuklag

@Luuklag Оновив відповідь. Дякую за пропозицію
kpratihast

Здається, це надзвичайно повільний варіант
TeoTN,

10

Якщо ви намагалися sudo apt-get remove docker-composeотримати E: Unable to locate package docker-compose, спробуйте цей спосіб:

Ця команда повинна повернути результат, щоб перевірити, чи він встановлений тут:

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

Видаліть стару версію:

sudo rm -rf docker-compose

Завантажте останню версію (перевірте офіційний репо: 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

( при необхідності замінити 1.24.0 )

Нарешті, застосуйте виконувані дозволи до двійкового файлу:

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

Перевірити версію:

docker-compose -v

5

Ось ще один лайнер для встановлення останньої версії docker-compose за допомогою curl і 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

використовуйте це з командного рядка: 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

Потім тестова версія:

$ docker-compose --version

1

Після jqдовгих розглядів способів виконати це я в кінцевому підсумку використовував , і, сподіваюся, я зможу розширити його, щоб обробляти інші репозиторії, крім Docker-Compose, без зайвої праці.

# 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

Якщо у вас є homebrew, ви також можете встановити через brew

$ brew install docker-compose

Це хороший спосіб встановлення в системі Mac OS


1

На робочому столі ubuntu 18.04.2 мені видалено `` local '' із шляху при використанні команди curl для встановлення пакету, і це працює для мене. Дивіться вище відповідь Кшитія.


1

Якщо ви встановили за допомогою pip, для оновлення ви можете просто використовувати:

 pip install --upgrade docker-compose

або як явно заявляє Марійо з pip3:

 pip3 install --upgrade docker-compose

у моєму випадку це булоpip3 install --upgrade docker-compose
Марійо

1

Я намагався встановити docker-compose на "Ubuntu 16.04.5 LTS", але після його встановлення так:

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

Я отримував:

-bash: / usr / local / bin / docker-compose: Дозвіл відхилено

і поки я використовував його з sudo, я отримував:

sudo: docker-compose: команду не знайдено

Отже, ось кроки, які я зробив і вирішив свою проблему:

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.