【问题标题】:How to upgrade docker-compose to latest version如何将 docker-compose 升级到最新版本
【发布时间】: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。

【问题讨论】:

    标签: docker-compose debian-based


    【解决方案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 并使用grep 或jq 从响应中提取版本(感谢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-compose 和 hash -d docker-compose 然后 pip install docker-compose 才能在 Ubuntu 18.04 上获得 docker-compose 1.24。
    • 通过pip安装docker-compose后遇到这个错误:ImportError: cannot import name 'Context'
    • 所以,为了处理这个错误,我重新安装了docker 包pip
    【解决方案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://stackoverflow.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 安装)

    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

    【讨论】:

      【解决方案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%
                      

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2013-02-24
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2012-04-21
                        • 2022-01-05
                        • 1970-01-01
                        相关资源
                        最近更新 更多