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

Posted

技术标签:

【中文标题】如何将 docker-compose 升级到最新版本【英文标题】:How to upgrade docker-compose to latest version 【发布时间】:2018-09-25 02:44:11 【问题描述】:

我已经使用命令安装了 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。

【问题讨论】:

【参考方案1】:

首先,删除旧版本

如果通过 apt-get

安装
sudo apt-get remove docker-compose

如果通过 curl

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

如果通过 pip

安装
pip uninstall docker-compose

然后在the release page at GitHub 上找到最新版本,或者通过 curl API 并使用grepjq 从响应中提取版本(感谢dragon788、frbl、和Saber Hayati 用于这些改进):

# curl + grep
VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d')

# curl + 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

【讨论】:

尝试更新 /usr/local/bin/docker-compose 中的路径,然后运行sudo chmod +x /usr/bin/docker-compose 无需移动文件。 /usr/local/bin 路径应该已经在 $PATH 中。只需chmod 就位。已更新答案以反映这一点。 你可能想做sudo chmod 755 $DESTINATION 而不仅仅是+x Neo,不错的收获。我通常只是根据我的需要调整烫发,以防其他事情按照他们的需要设置。但在这里我们正在下载一个新文件。设置所有权限是有意义的。 @Rebar 您能否更具体地说明您希望将路径更新为什么? /usr/local/bin 是放置不受打包系统管理的全局二进制文件的标准位置。答案还提到指定“您最喜欢的 $PATH 可访问位置”,这表示如果您的 $PATH 不同,请进行调整。【参考方案2】:

为 Docker Compose 安装和升级它提供永久且可持续的解决方案的最简单方法是使用 package manager pip 和:

pip install docker-compose

我正在为丑陋的“如何升级到最新版本号”问题寻找一个好的解决方案,该问题是在您阅读官方文档后出现的 - 只是偶尔发现它 - 只需看看 @ 987654322@ - 它应该反映(大部分)latest released Docker Compose version 的当前编号。

在管理软件安装方面,包管理器始终是最佳解决方案!所以你只是从自己处理版本中抽象出来。

【讨论】:

+1 好答案。之前:我有 docker-compose 版本:docker-compose 版本 1.21.2,构建 a133471 所以要升级到最新的非 RC 版本,我发现这可以升级:1)apt install python-pip 安装 PIP 然后@987654326 @ 安装最新版本然后检查版本:docker-compose --version 这给了我:docker-compose version 1.23.2, build 1110ad0 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。 通过pip安装docker-compose后遇到这个错误:ImportError: cannot import name 'Context' 所以,为了处理这个错误,我重新安装了dockerpip【参考方案3】:

如果你试过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

【讨论】:

执行此操作后,我收到此错误 - bash: /usr/bin/docker-compose: No such file or directory【参考方案4】:

根据@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 with zsh)。你确定你复制的正确吗? 尝试双引号,因为有时 shell 会有点卡。【参考方案5】:

如果上述方法对您不起作用,请参考此答案:https://***.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

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review @Luuklag 更新了答案。谢谢你的建议 这似乎是一个非常慢的选项【参考方案6】:

这是另一个使用 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

【讨论】:

这应该是正确答案!最简单/简短实用的解决方案! 执行此操作后,我收到此错误 - bash: /usr/bin/docker-compose: No such file or directory【参考方案7】:

我试图在“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 行命令应该仍然可以从 root 工作【参考方案8】:

分三步完成。 (显示 apt-get 安装)

    卸载最后一个。例如用于 apt-get 安装

sudo apt-get remove docker-compose

    安装新的 (https://docs.docker.com/compose/install/)

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

然后

 sudo chmod +x /usr/local/bin/docker-compose
    检查您的版本

docker-compose --version

【讨论】:

【参考方案9】:

从命令行使用它: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

【讨论】:

【参考方案10】:

如果你使用 pip 安装,升级你可以使用:

 pip install --upgrade docker-compose

或者正如 Mariyo 明确指出的 pip3:

 pip3 install --upgrade docker-compose

【讨论】:

在我的例子中是pip3 install --upgrade docker-compose【参考方案11】:

在研究了很多执行此操作的方法后,我最终使用了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

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

使用,

$ 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 && sudo chmod +x /usr/local/bin/docker-compose

$ docker-compose -v

【讨论】:

【参考方案14】:

在 url 中使用 latest 标志会将您重定向到最新版本的 repo

由于 github 文件名中的操作系统名称是小写的,您应该使用 sed -e 's/\(.*\)/\L\1/'uname -s 转换为小写。

sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s|sed -e 's/\(.*\)/\L\1/')-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose

【讨论】:

【参考方案15】:

更新 docker-compose 的简单解决方案

这将删除 docker-compose 的现有二进制文件并安装新版本。

sudo cd /usr/local/bin && sudo rm -rf docker-compose
sudo wget https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64
sudo mv docker-compose-linux-x86_64 docker-compose
sudo chmod +x docker-compose

最新版本请访问https://github.com/docker/compose/releases 并将最新版本替换为 v2.1.1

【讨论】:

【参考方案16】:

如果你有自制软件,你也可以通过brew安装

$ brew install docker-compose

这是在 Mac OS 系统上安装的好方法

【讨论】:

【参考方案17】:

这些解决方案中的大多数都已过时或要求您安装旧版本。 安装最新的

sudo apt  install jq

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

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

【讨论】:

【参考方案18】:

使用更新的 Docker Desktop for Mac 3.3.0,您无需将 Docker Compose 作为单独的包安装。默认情况下,Docker Compose 是随 Docker 一起安装的一等公民。查看以下 CLI:


docker compose version
Docker Compose version 2.0.0-beta.1%

【讨论】:

以上是关于如何将 docker-compose 升级到最新版本的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Julia 升级到新版本?

如何将 Typescript 升级到最新版本?

如何将 Angular CLI 升级到最新版本

如何将正在运行的 Elasticsearch 旧实例升级到新版本?

如何将 SQL Server localDB 升级到较新版本?

如何将 Outlook 2007 VSTO 插件升级到新版本