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

     2023-02-15     176

关键词:

【中文标题】如何将 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%

【讨论】:

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

】如何将Typescript升级到最新版本?【英文标题】:HowtoupgradeTypescripttothelatestversion?【发布时间】:2013-02-2410:30:08【问题描述】:我有一台装有OSX10.8.2的MacBookPro前段时间我安装了Typescript,今天我想将该安装升级到可用的最新版本... 查看详情

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

】如何将AngularCLI升级到最新版本【英文标题】:HowtoupgradeAngularCLItothelatestversion【发布时间】:2017-10-1110:25:36【问题描述】:使用ng--version我得到了:@angular/cli:1.0.0这不是可用的最新版本。由于我的系统上全局安装了AngularCLI,为... 查看详情

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

】如何将SQLServerlocalDB升级到较新版本?【英文标题】:HowdoIupgradeSQLServerlocalDBtoanewerversion?【发布时间】:2015-01-0921:44:43【问题描述】:SqlServerlocalDB从2012升级到2014可以吗?我们目前使用的是SQLServer2012的版本11。我需要从SQLServer20... 查看详情

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

】如何将正在运行的Elasticsearch旧实例升级到新版本?【英文标题】:HowtoupgradearunningElasticsearcholderinstancetoanewerversion?【发布时间】:2012-02-2910:16:35【问题描述】:基本上我找不到解释将正在运行的Elasticsearch实例升级到当前版本... 查看详情

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

】如何将Outlook2007VSTO插件升级到新版本【英文标题】:HowtocanIupgrademyOutlook2007VSTOaddintoanewversion【发布时间】:2009-10-2211:48:45【问题描述】:我为Outlook的VSTO插件创建了一个安装项目(不是ClickOnce)。我安装了setup.exe。然后我用增... 查看详情

如何正确将 angular 2 (npm) 升级到最新版本?

】如何正确将angular2(npm)升级到最新版本?【英文标题】:HowdoIcorrectlyupgradeangular2(npm)tothelatestversion?【发布时间】:2016-08-0412:18:06【问题描述】:最近我在https://angular.io/docs/ts/latest/tutorial/开始了Angular2教程。并离开了Angular2beta8。... 查看详情

如何将我的全局 vue-cli 安装升级到最新版本?

】如何将我的全局vue-cli安装升级到最新版本?【英文标题】:Howtoupgrademyglobalvue-cliinstalltothelatestversion?【发布时间】:2019-09-0507:16:57【问题描述】:我已经安装了vue-cli3.5.5。当我运行vuecreatemyapp时,它会显示消息Updateavailable3.6.2... 查看详情

将 Node.js 升级到最新版本

...我我没有所需的Node.js版本(我有v0.4.11并且需要v0.4.12)。如何升级到这个版本?我想我可以用最新版本再次安装它,但在我确定文件夹“node”中的项目文件 查看详情

如何将 Web 应用程序从 JSF Mojarra 2.0.5 升级到最新的 Mojara 2.1.9

】如何将Web应用程序从JSFMojarra2.0.5升级到最新的Mojara2.1.9【英文标题】:HowtoupgradewebapplicationfromJSFMojarra2.0.5tothelatestMojara2.1.9【发布时间】:2012-06-2000:30:27【问题描述】:我想将我的Web应用程序从Mojarra2.0.5升级到最新的JSFMojarra(... 查看详情

如何将文件夹加载到“〜/” docker-compose,volumes

】如何将文件夹加载到“〜/”docker-compose,volumes【英文标题】:Howtoloadfolderinto"~/"docker-compose,volumes【发布时间】:2022-01-2222:24:48【问题描述】:我使用的模块之一从“~/.oci”加载配置文件,但我的应用程序看不到它,因... 查看详情

将 XAMPP 中的 phpMyAdmin 升级到最新版本会产生错误

】将XAMPP中的phpMyAdmin升级到最新版本会产生错误【英文标题】:UpgradingphpMyAdmininXAMPPtolatestproducesanerror【发布时间】:2016-08-0809:01:11【问题描述】:我正在尝试使用本指南将XAMPP中的phpMyAdmin更新到最新版本:HowtoupgradephpMyAdmininXAMPP... 查看详情

如何将macosx10.10.5下的python2.7升级到最新的python3.5

参考技术A苹果系统界面很美,但有点不习惯。你可以进入WIN系统,然后使用360安全卫士的搬家助手来释放空间将非系统文件转移。另外借助PQ分区魔术师将空间调打一下。 参考技术B官网下载就好了,终端命令行也行,但是我忘... 查看详情

如何使用 docker-compose 将容器部署到谷歌云?

】如何使用docker-compose将容器部署到谷歌云?【英文标题】:Howtodeploycontainerusingdocker-composetogooglecloud?【发布时间】:2020-07-2405:51:42【问题描述】:我对GCP很陌生,并且主要使用AWS。我目前正在尝试使用GCP并希望使用docker-compose部... 查看详情

如何将 _setCustomVar 升级到 Universal Analytics

】如何将_setCustomVar升级到UniversalAnalytics【英文标题】:Howtoupgrade_setCustomVartoUniversalAnalytics【发布时间】:2014-06-2609:04:02【问题描述】:我查看了UniversalAnalytics,但没有找到问题的正确答案。如何将此行从旧版Analytics更新为新版Un... 查看详情

如何将macosx10.9下的python2.7升级到最新的python3.3

参考技术A原来的安装目录见第2步,不过所有的python都在/System/Library/Frameworks/Python.framework/Versions目录中,所以最好使用下面的命令移动一下,当然不移动也可以。但后面步骤中的某些路径需要修改下。sudomv/Library/Frameworks/Python.fra... 查看详情

如何将系统从rhel6.10升级到rhel7.6?

如果您的RHEL系统使用最新的RHEL6.10版本,则完全支持从RHEL6升级至至RHEL7升级。如果不是,请使用yum命令更新系统以安装最新的RHEL6.10软件包,如下所示。yumupdate-yreboot接下来,您需要启用Extras存储库以将系统订阅到包含升级工具... 查看详情

如何将厨师服务器 11 升级到 12

】如何将厨师服务器11升级到12【英文标题】:Howtoupgradechefserver11to12【发布时间】:2018-03-1101:41:52【问题描述】:我想将我的厨师服务器11升级到12最新版本,服务器在AWS中,如果出现任何问题,如何准备服务器和角色后退步骤。... 查看详情

如何将 Android 项目升级到 Java 11

】如何将Android项目升级到Java11【英文标题】:HowtoupgradeanAndroidprojecttoJava11【发布时间】:2021-06-0113:45:29【问题描述】:我正在使用最新的AndroidStudioArcticFox2020.03.01Canary8和AGP7,并且我想将我的项目转换为使用Java11。显然,正如http... 查看详情