升级 docker-compose 权限被拒绝

升级 docker-compose 权限被拒绝

我正在尝试升级 docker-compose,因为使用当前版本运行 .yml 文件时会出现一些错误。这是我目前的情况:

$ which docker
/usr/bin/docker
$ which docker compose
/usr/bin/docker-compose

$ ls -al | grep docker
-rwxr-xr-x  1 root   root    13511128 Feb 28 09:02 docker
-rwxr-xr-x  1 root   root         336 Dez 11  2015 docker-compose
-rwxr-xr-x  1 root   root    11314960 Feb 28 09:01 docker-containerd
-rwxr-xr-x  1 root   root    10464424 Feb 28 09:01 docker-containerd-ctr
-rwxr-xr-x  1 root   root     1976648 Feb 28 09:01 docker-containerd-shim
-rwxr-xr-x  1 root   root    39473368 Feb 28 09:03 dockerd
-rwxr-xr-x  1 root   root      862296 Feb 28 09:01 docker-init
-rwxr-xr-x  1 root   root     2573840 Feb 28 09:01 docker-proxy
-rwxr-xr-x  1 root   root     8195464 Feb 28 09:01 docker-runc

当尝试从https://github.com/docker/compose/releases。命令的输出:

sudo curl -L https://github.com/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose

给我:

bash: /usr/bin/docker-compose: Permission denied

我也正在使用 sudo 命令。为什么会这样?谢谢

答案1

问题的根源在于sudo只会在curl命令的一部分上执行,而不会在>命令的一部分上执行。

您可以sudo通过以下方式运行该命令的两个部分:

sudo bash -c "curl -L https://github.com/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose"

简单的解决方案可能是:

  1. 下载文件

    获得https://github.com/docker/compose/releases/download/1.11.2/docker-compose-uname -s-uname -m

  2. sudo其放置在正确的位置

    sudo mv docker-compose-`uname -s`-`uname -m` /usr/bin/docker-compose

答案2

sudo curl -L https://github.com/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose

> 之后您也需要 sudo 访问权限只需像下面这样更改命令。使用带有 | 管道的 tee 命令。

sudo curl -L https://github.com/docker/compose/releases/download/1.11.2/docker-compose-`uname -s`-`uname -m` |sudo tee /usr/bin/docker-compose

相关内容