如何将docker-compose升级到最新版本


110

我已经使用命令安装了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完成安装时可用。我不确定安装是否通过curl完成

sudo apt install docker-compose

请让我知道我现在应该怎么做才能卸载并重新安装docker-compose。

Answers:


145

首先,删除旧版本

如果通过apt-get安装

sudo apt-get remove docker-compose

如果通过卷曲安装

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 / 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
Neo

2
Neo,好抓。我通常只是根据需要调整烫发,以防其他事物影响了他们的需要。但是这里我们正在下载一个新文件。设置所有烫发是有道理的。
黄金

2
@Rebar您能否更具体地说明要将路径更新到的内容?/usr/local/bin是放置不受包装系统管理的全局二进制文件的标准位置。答案还提到指定“您最喜欢的$ PATH可访问位置”,这表明您$PATH是否在进行调整。
埃里克·约翰逊

38

为Docker Compose安装提供永久性和可持续性解决方案以及升级它的最简单方法是,将软件包管理器pip与以下各项配合使用:

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-composehash -d docker-compose然后pip install docker-compose才能在Ubuntu 18.04上获得docker-compose 1.24。
krubo

通过pip安装docker-compose之后,我遇到此错误:ImportError: cannot import name 'Context'
Benyamin Jafari

所以,对付这个错误,我重新安装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获取最新版本。


我在第四行遇到错误zsh: parse error near
:)

刚刚在这里进行了测试,但似乎工作正常(使用zsh的Debian 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 '18

@Luuklag更新了答案。谢谢您的建议
kpratihast '18

这似乎是非常缓慢的选择
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

在ubuntu桌面18.04.2上,使用curl命令安装软件包时,我从路径中删除了“本地”文件,它对我有用。参见上述Kshitij的回答。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.