我已经使用命令安装了docker-compose
Sudo apt安装docker-compose
它安装了docker-compose版本1.8.0和build unknown
我需要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
但在此之前,我必须卸载当前版本,这可以使用命令来完成
执行rm /usr/local/bin/docker-compose
但是这只能在使用curl完成安装时使用。我不确定安装是否像我使用的那样由curl完成
Sudo apt安装docker-compose
请让我知道我现在应该做什么来卸载和重新安装docker-compose。
Centos / RHEL
如果您正在使用x86-64架构的Centos7,请遵循下面我的回答。这个答案也可以在我的github中找到。
停止你的Docker容器
我注意到其他答案并没有谈到在尝试优雅地升级之前停止docker容器/图像实例。假设是不可避免的,但代价可能很高。我们继续前进!
更新Docker-Compose的选项
如果您首先使用Curl命令下载并安装docker-compose,则有两个选项可以升级docker-compose。
使用Curl、jq包和Github的直接URL到docker-compose存储库。
使用Curl、Sed和Github的直接URL到docker-compose存储库。
注意:下面的一些命令需要“sudo”权限。
示范
下面的脚本被保存到一个名为“update_docker_composition .sh”的文件中。您需要赋予该文件可执行权限。
像这样:
chmod +x update_docker_compose.sh
docker_docker_composition .sh文件内容:
#!/bin/bash
# author: fullarray (stackoverflow user)
# Contribution shared on: stackoverflow.com
# Contribution also available on: github.com
# date: 06112022
# Stop current docker container running
docker stop containerID
# Remove current docker network running
docker rm containerID
# Remove image of target application(s)
docker image rm imageID
# Delete either dangling (unatagged images) docker containers or images or network
docker system prune -f
# This step depends on the jq package.
# Uncomment jq package installation command below if using Centos7 x86-64.
# sudo yum install jq
# Declare variable to get latest version of docker-compose from github repository
compose_version=$(curl https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)
# Declare variable to target installation directory
target_install_dir='/usr/local/bin/docker-compose'
# Get OS and build (assumes Linux Centos7 and x86_64)
get_local_os_build=$(uname -s)-$(uname -m)
# Execute curl command to carry download and installation operation
curl -L https://github.com/docker/compose/releases/download/$compose_version/docker-compose-$get_local_os_build -o $target_install_dir
# Use chmod to modify permissions to target installation directory (to make it executable)
chmod +x $target_install_dir
# Print docker-compose version to terminal to verify upgrade
$(docker-compose --version)
使用特定于您的环境的变量编辑脚本
上面的脚本有几个变量,您需要使用特定于docker环境的值进行编辑。例如,您需要将容器ID和映像ID替换为以下命令输出的值。
docker ps
and
docker images output
一旦您完成了文件的创建(包括编辑)。切换到包含该文件的目录。例如,如果您在/home/username/script/update_docker_compose.sh中创建文件
cd /home/username/script
最后,执行以下命令运行脚本
./update_docker_compose.sh
选项2
创建一个名为update_docker_composition .sh的脚本文件
编辑文件,添加如下内容:
#!/bin/bash
# author: fullarray (stackoverflow user)
# Contribution shared on: stackoverflow.com
# Contribution also available on: github.com
# date: 06112022
# Stop current docker container running
docker stop containerID
# Remove current docker network running
docker rm containerID
# Remove image of target application(s)
docker image rm imageID
# Delete either dangling (unatagged images) docker containers or images or network
docker system prune -f
# Declare variable to target installation directory
target_install_dir='/usr/local/bin/docker-compose'
# Get OS and build (assumes Linux Centos7 and x86_64)
get_local_os_build=$(uname -s)-$(uname -m)
# Execute curl and sed command to carry out download and installation operation
# compose_latest_version=$(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-$get_local_os_build") -o $target_install_dir
# Use chmod to modify permissions to target installation directory (to make it executable)
chmod +x $target_install_dir
# Print docker-compose version to terminal to verify upgrade
$(docker-compose --version)
使用特定于您的环境的变量编辑脚本
上面的脚本还有一些变量,您需要使用特定于docker环境的值进行编辑。例如,您需要将容器ID和映像ID替换为以下命令输出的值。
docker ps
and
docker images output
一旦您完成了文件的创建(包括编辑)。切换到包含该文件的目录。例如,如果您在/home/username/script/update_docker_compose.sh中创建文件
cd /home/username/script
最后,执行以下命令运行脚本
./update_docker_compose.sh