Docker-compose를 최신 버전으로 업그레이드하는 방법


111

명령을 사용하여 docker-compose를 설치했습니다.

sudo apt install docker-compose

Docker-compose 버전 1.8.0을 설치하고 알 수 없음

최신 버전의 docker-compose 또는 최소한 1.9.0 버전이 필요합니다.

누구든지 업그레이드하거나 최신 버전을 제거하고 다시 설치하기 위해 취해야 할 접근 방식을 알려주십시오.

Docker 웹 사이트를 확인한 결과 최신 버전을 설치하기 위해 이것을 권장하고 있음을 알 수 있습니다. '

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을 사용하여 설치가 완료된 경우에만 사용할 수 있습니다. 내가 사용한 것처럼 컬로 설치했는지 확실하지 않습니다.

sudo apt install docker-compose

docker-compose를 제거하고 다시 설치하려면 지금 무엇을해야하는지 알려주세요.

답변:


146

먼저 이전 버전을 제거하십시오 .

apt-get을 통해 설치된 경우

sudo apt-get remove docker-compose

curl을 통해 설치된 경우

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

pip 를 통해 설치된 경우

pip uninstall docker-compose

그런 다음 GitHub의 릴리스 페이지에서 최신 버전 거나 설치 한 경우 API를 컬링하여 찾습니다 ( 이 개선을 위해 dragon788frbl 덕분에 ).jq

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 / 지방 / 빈 / 고정 표시기-작성에 업데이트 경로를 시도하고 실행sudo chmod +x /usr/bin/docker-compose
라즈 쿠마르 고얄

2
파일을 이동할 필요가 없습니다. /usr/local/bin경로에 있어야합니다 $PATH이미. 그냥 chmod대신합니다. 이를 반영하기 위해 답변이 업데이트되었습니다.
Gold

4
당신은 아마 sudo chmod 755 $DESTINATION대신에 하고 싶을 것입니다+x
Neo

2
네오, 잘 잡아. 나는 일반적으로 다른 것들이 그들이 필요로하는 것을 설정 한 경우에 대비하여 내 필요에 맞게 파마를 조정합니다. 그러나 여기서 우리는 새로운 파일을 다운로드하고 있습니다. 모든 파마를 설정하는 것이 합리적입니다.
Gold

2
@Rebar 경로를 업데이트 할 대상에 대해 더 구체적으로 말씀해 주시겠습니까? /usr/local/bin패키징 시스템에서 관리하지 않는 글로벌 바이너리를 넣는 꽤 표준적인 장소입니다. 대답은 또한 "좋아하는 $ PATH 액세스 가능 위치"를 지정하여 $PATH다른 경우 조정을 나타냅니다 .
Eric M. Johnson

38

Docker Compose 설치를위한 영구적이고 지속 가능한 솔루션을 보유하고 업그레이드하는 가장 쉬운 방법은 다음과 함께 패키지 관리자 pip 를 사용하는 것 입니다.

pip install docker-compose

나는 당신이 공식 문서를 읽은 후에 나타난 추악한 "최신 버전 번호로 업그레이드하는 방법"문제에 대한 좋은 해결책을 찾고 있었다. 그리고 가끔 그것을 발견했다. 단지 docker-compose pip를 봐라. 패키지 - 그것은 (대부분) 반영의 현재 수 있어야 최신 출시 도커 작성 버전 .

패키지 관리자는 소프트웨어 설치 관리와 관련하여 항상 최고의 솔루션입니다! 따라서 버전을 직접 처리하는 것을 추상화합니다.


2
+1 좋은 답변. 이전 : 저는 docker-compose 버전을 가졌습니다 : docker-compose 버전 1.21.2, 빌드 a133471 따라서 최신 비 RC 버전으로 업그레이드하려면 이것이 작동하는 것으로 업그레이드했습니다. 1) apt install python-pipPIP pip install docker-compose를 설치 한 다음 최신 버전을 설치하고 : 다음 버전을 확인하기 위해 docker-compose --version고정 표시기-작성 버전 1.23.2, 빌드 1110ad0 : 나에게 준
therobyouknow

pip install docker-compose내가해야 할 일을했을 있도록 "고정 표시기-작성 이미 충족 요구 사항을"나를주고 있었다 apt-get purge docker-composehash -d docker-compose다음 pip install docker-compose고정 표시기-작성 1.24 우분투 18.04에 얻을.
krubo

docker-compose by pip를 설치 한 후이 오류가 발생했습니다.ImportError: cannot import name 'Context'
Benyamin Jafari

따라서이 오류를 처리하기 위해 docker패키지를 다시 설치 합니다.pip
Benyamin Jafari

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에서 최신 버전을 가져옵니다.


네 번째 줄에서 오류가 발생했습니다 zsh: parse error near
:)

여기에서 테스트했지만 제대로 작동하는 것 같습니다 (zsh가있는 데비안 10). 정확하게 복사 하셨나요?
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

11

시도 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

다음은 curl 및 sed를 사용하여 최신 버전의 docker-compose를 설치하는 또 다른 oneliner입니다.

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

2

"Ubuntu 16.04.5 LTS"에 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

나는 얻고 있었다 :

-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

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

우분투 데스크톱 18.04.2에서 curl 명령을 사용하여 패키지를 설치할 때 경로에서 '로컬'이 제거되었으며 저에게 적합합니다. Kshitij의 위 답변을 참조하십시오.


1

pip로 설치 한 경우 업그레이드하려면 다음을 사용할 수 있습니다.

 pip install --upgrade docker-compose

또는 Mariyo가 pip3로 명시 적으로 말했듯이 :

 pip3 install --upgrade docker-compose

제 경우에는pip3 install --upgrade docker-compose
Mariyo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.