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

How to upgrade docker-compose to latest version

我已经安装了 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。

首先,删除旧版本

如果通过 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 or by curling the API and extracting the version from the response using grep or jq (thanks to dragon788, frbl, and 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

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

pip install docker-compose

我正在寻找一个解决丑陋 "how to upgrade to the latest version number" 问题的好方法,这个问题是在您阅读官方文档后出现的 - 只是偶尔会发现它 - 看看 docker-compose pip package - it should reflect (mostly) the current number of the latest released Docker Compose version.

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

如果以上方法都不适合你,请参考这个答案:

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

根据@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 中获取最新版本。

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

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

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

安装
$ brew install docker-compose

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

这是安装最新版本 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

在 ubuntu 桌面版 18.04.2 上,我在使用 curl 命令安装软件包时从路径中删除了 'local',它对我有效。请参阅以上 Kshitij 的回答。

如果您尝试 sudo apt-get remove docker-compose 并获得 E: Unable to locate package docker-compose,请尝试此方法:

这个命令必须return一个结果,为了检查它是否安装在这里:

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

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

 pip install --upgrade docker-compose

或者如 Mariyo 明确指出的 pip3:

 pip3 install --upgrade docker-compose

我试图在 "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: Permission denied

当我将它与 sudo 一起使用时,我得到:

sudo: docker-compose: command not found

下面是我解决问题的步骤:

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

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

  1. 卸载最后一个。例如对于 apt-get 安装

sudo apt-get remove docker-compose

  1. 安装新的 (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
  1. 检查你的版本

docker-compose --version

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

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

使用更新的 Docker Desktop for Mac 3.3.0,您不需要安装 Docker Compose 作为单独的包。 Docker Compose 作为第一个 class 公民默认安装 Docker。查看以下 CLI:


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

使用,

$ 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

更新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

for the latest version visit https://github.com/docker/compose/releases and replace the latest one with v2.1.1

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

由于 OS 名称在 github 的文件名中是小写的,您应该使用 sed -e 's/\(.*\)/\L/'.

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

在我的例子中,使用 Windows + WSL2 和 Ubuntu 20.04,只需要这个:

sudo apt update

然后:

sudo apt upgrade

在 mac 上(也在 ubuntu 上工作):

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

注意: 如下所示: https://github.com/docker/compose/releases

Docker 引擎和 Docker Compose 插件

自从微软接管 Docker 他们致力于将 docker-compose 移植到他们的 Docker Engine CLI 插件。对于未来的支持和更新,我建议使用 docker compose 插件(注意缺少的破折号),它可以通过 docker-compose-plugin 包安装。以下说明假设您使用 Ubuntu 作为发行版或任何使用 apt 作为包管理器的发行版。

安装准备

更新镜像:

sudo apt-get update

确保安装了以下软件包:

sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

之后添加官方 Docker GPG 密钥:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

最后添加 stable 存储库:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

还要确保 Docker 引擎和其他所需的依赖项已安装:

sudo apt-get install docker-ce docker-ce-cli containerd.io

安装docker compose插件

sudo apt-get install docker-compose-plugin

插件的任何未来更新都可以通过 apt 轻松应用。
如需进一步参考,请查看 Docker Engine and Docker Compose.

的官方安装说明