如何升级 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 安装)
- 卸载最后一个。例如对于 apt-get 安装
sudo apt-get remove docker-compose
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
这些解决方案中的大多数都已过时或让您安装旧版本。
安装最新的
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
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.
的官方安装说明
我已经安装了 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 安装)
- 卸载最后一个。例如对于 apt-get 安装
sudo apt-get remove docker-compose
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
这些解决方案中的大多数都已过时或让您安装旧版本。 安装最新的
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
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.