ChatGPT解决这个技术问题 Extra ChatGPT

sudo:docker-compose:找不到命令

我正在尝试使用 sudo 运行 docker-compose。

我在 Ubuntu 16.01 上安装了 docker 和 docker-compose。

由于尝试使用 curl 下载 compose 时出错,我最终使用 pip 安装它。

Docker 版本 1.12.0,构建 8eab29e docker-compose 版本 1.8.0,构建 94f7016

然而,当我尝试使用 sudo 运行 docker-compose 时,我得到以下信息(使用 sudo 和 docker 很好)

sudo: docker-compose: command not found

我想“已安装”的含义有不同的定义。我一直在声称未安装的同一台计算机上使用 docker-compose。

$ dpkg -s docker-compose
dpkg-query: package 'docker-compose' is not installed and no information is available
Use dpkg --info (= dpkg-deb --info) to examine archive files,
and dpkg --contents (= dpkg-deb --contents) to list their contents.


$ whereis docker-compose
docker-compose: /home/user/.local/bin/docker-compose

$ pip show --files docker-compose
---
Metadata-Version: 2.0
Name: docker-compose
Version: 1.8.0
Summary: Multi-container orchestration for Docker
Home-page: https://www.docker.com/
Author: Docker, Inc.
Author-email: UNKNOWN
Installer: pip
License: Apache License 2.0
Location: /home/anton/.local/lib/python2.7/site-packages
Requires: six, jsonschema, enum34, cached-property, websocket-client, docker-py, requests, docopt, dockerpty, PyYAML, texttable
Classifiers:
  Development Status :: 5 - Production/Stable
  Environment :: Console
  Intended Audience :: Developers
  License :: OSI Approved :: Apache Software License
  Programming Language :: Python :: 2
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3
  Programming Language :: Python :: 3.4
Files:
  ../../../bin/docker-compose
  compose/GITSHA
  compose/__init__.py
  compose/__init__.pyc
  compose/__main__.py
  compose/__main__.pyc
  compose/bundle.py
  compose/bundle.pyc
  compose/cli/__init__.py
  compose/cli/__init__.pyc
  compose/cli/colors.py
  compose/cli/colors.pyc
  compose/cli/command.py
  compose/cli/command.pyc
  compose/cli/docker_client.py
  compose/cli/docker_client.pyc
  compose/cli/docopt_command.py
  compose/cli/docopt_command.pyc
  compose/cli/errors.py
  compose/cli/errors.pyc
  compose/cli/formatter.py
  compose/cli/formatter.pyc
  compose/cli/log_printer.py
  compose/cli/log_printer.pyc
  compose/cli/main.py
  compose/cli/main.pyc
  compose/cli/signals.py
  compose/cli/signals.pyc
  compose/cli/utils.py
  compose/cli/utils.pyc
  compose/cli/verbose_proxy.py
  compose/cli/verbose_proxy.pyc
  compose/config/__init__.py
  compose/config/__init__.pyc
  compose/config/config.py
  compose/config/config.pyc
  compose/config/config_schema_v1.json
  compose/config/config_schema_v2.0.json
  compose/config/environment.py
  compose/config/environment.pyc
  compose/config/errors.py
  compose/config/errors.pyc
  compose/config/interpolation.py
  compose/config/interpolation.pyc
  compose/config/serialize.py
  compose/config/serialize.pyc
  compose/config/sort_services.py
  compose/config/sort_services.pyc
  compose/config/types.py
  compose/config/types.pyc
  compose/config/validation.py
  compose/config/validation.pyc
  compose/const.py
  compose/const.pyc
  compose/container.py
  compose/container.pyc
  compose/errors.py
  compose/errors.pyc
  compose/network.py
  compose/network.pyc
  compose/parallel.py
  compose/parallel.pyc
  compose/progress_stream.py
  compose/progress_stream.pyc
  compose/project.py
  compose/project.pyc
  compose/service.py
  compose/service.pyc
  compose/state.py
  compose/state.pyc
  compose/utils.py
  compose/utils.pyc
  compose/volume.py
  compose/volume.pyc
  docker_compose-1.8.0.dist-info/DESCRIPTION.rst
  docker_compose-1.8.0.dist-info/INSTALLER
  docker_compose-1.8.0.dist-info/METADATA
  docker_compose-1.8.0.dist-info/RECORD
  docker_compose-1.8.0.dist-info/WHEEL
  docker_compose-1.8.0.dist-info/entry_points.txt
  docker_compose-1.8.0.dist-info/metadata.json
  docker_compose-1.8.0.dist-info/pbr.json
  docker_compose-1.8.0.dist-info/top_level.txt
Entry-points:
  [console_scripts]
  docker-compose=compose.cli.main:main

我已经尝试了以下 - 但仍然得到同样的错误:

$ chmod +x /home/username/.local/bin/docker-compose
$ chmod +x /home/username/.local/lib/python2.7/site-packages
在哪里安装了 docker-compose?您是通过软件包安装的(在这种情况下,dpkg -s docker-compose 会验证这一点),还是通过其他机制安装?
同样的错误,找不到命令?您尝试过sudo /home/user/.local/bin/docker-compose ... 吗?
如我所见,docker-compose 安装在本地路径中,如果 /home/user/.local/bin 已经在您的用户路径中,则 sudo 使用 sudo "PATH=$PATH" docker-compose 将无法访问该路径,否则使用 sudo "PATH=$PATH:/home/user/.local/bin" docker-compose。 (更新的答案)

J
J. Scott Elblein

在 Ubuntu 16.04 上

以下是我解决此问题的方法:请参阅 Docker Compose documentation

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 chmod +x /usr/local/bin/docker-compose

执行 curl 命令后,它会将 docker-compose 放入

/usr/local/bin

这不在 PATH 上。要修复它,请创建一个符号链接:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

现在,如果您这样做:docker-compose --version

您会看到 docker-compose 现在位于 PATH


添加符号修复它
看起来工作量很大,我只是运行了这个命令来解决问题:> sudo apt install docker-compose
2022 年 3 月 - 将此用于 linux sudo curl -L github.com/docker/compose/releases/download/v2.3.4/… -o /usr/local/bin/docker-compose
FrankyHollywood 的解决方案对我有用
l
larsks

dpkg -s ... 的输出表明 docker-compose 不是从包安装的。如果没有您提供的更多信息,至少有两种可能性:

docker-compose 根本没有安装,你需要安装它。这里的解决方案很简单:安装 docker-compose。 docker-compose 安装在您的 $HOME 目录(或不在 root 的 $PATH 上的其他位置)中。在这种情况下有几种解决方案。最简单的可能是替换:sudo docker-compose ... 使用:sudo `which docker-compose` ...这将使用 docker-compose 的完整路径调用 sudo。您也可以将 docker-compose 安装到系统范围的目录中,例如 /usr/local/bin。


我要特别感谢您包含使用反引号单引号 'sudo which docker-compose 的快速简单的解决方案。 . . ' 对背部抽动效果很好,其他任何东西都失败了......
P
Pratik

如果您尝试通过官方 docker-compose v1 页面安装,您需要使用 curl 下载二进制文件:

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

然后不要忘记将可执行标志添加到二进制文件中:

sudo chmod +x /usr/local/bin/docker-compose

如果 docker-compose 是使用 python-pip 安装的

sudo apt-get -y install python-pip
sudo pip install docker-compose

尝试使用 pip show --files docker-compose 查看它的安装位置。

如果 docker-compose 安装在用户路径中,请尝试:

sudo "PATH=$PATH" docker-compose

正如我从您更新的帖子中看到的那样,docker-compose 安装在用户路径 /home/user/.local/bin 中,如果此路径不在您的本地路径 $PATH 中,请尝试:

sudo "PATH=$PATH:/home/user/.local/bin" docker-compose

有多种安装方法,pip 是其中之一,但也可以下载为二进制文件。
我使用 pip 来安装 compose。
仅供参考,没有 sudo 可以使用 pip install docker-compose - 这只会在 $HOME/.local/bin 下为您的本地用户安装 - 之后,只需更新 .bashrc/.zshrc/etc 中的 $PATH 以包含它:export PATH=$HOME/.local/bin:$PATH
P
Pratik

我有同样的问题,我解决了问题:

以下安装 Docker Compose v1:

第 1 步:使用以下命令下载 docker-compose。

     1. sudo su

     2. sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

第 2 步:运行命令

    chmod +x /usr/local/bin/docker-compose

第 3 步:检查 docker-compose 版本

     docker-compose --version

谢谢,经过大量搜索,这是唯一对我有帮助的
J
J. Scott Elblein

我将把它留在这里作为可能的解决方法,至少对我有用,并且可能会帮助其他人。很确定这将是一个仅限 linux 的修复程序。

我决定不使用 pip install 而使用 github 版本(安装指南上的选项一)。

我没有将复制的 docker-compose 目录从 curl/github 命令放入 /usr/local/bin/docker-compose,而是选择了 /usr/bin/docker-compose,这是 Docker 本身的位置,它将强制程序在根目录下运行。所以它在 root 和 sudo 中工作,但现在如果没有 sudo 就无法工作,所以相反的效果就是你想以用户身份运行它。


除了将 docker-compose 移动到其他位置外,它还有助于添加符号链接:ln -s /usr/bin/docker-compose /usr/local/bin/docker-compose
@VinceBowdren 我认为你的意思是相反的:ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
S
Sasha Shpota

如果为您的用户安装了 docker-compose,但没有为 root 用户安装,并且如果您只需要运行一次而忘记它,请执行以下操作:

找出 docker-compose 的路径:which docker-compose

运行从上一个命令中指定 docker-compose 的完整路径的命令,例如:sudo /home/your-user/your-path-to-compose/docker-compose up


B
Brivaldo Junior

或者,只需将二进制路径添加到 PATH 中。在 .bashrc 的末尾:

... 
export PATH=$PATH:/home/user/.local/bin/

保存文件并运行:

source .bashrc

该命令将起作用。


M
MD Nasirul Islam

docker-compose 未安装。请先尝试从他们的 official documentation 安装它
每当发生此类错误时,请尝试通过键入 which command_name 来验证应用程序的安装,它将搜索可执行文件并显示给您那个地点。


A
Alon212

不得不删除一个大的日志文件,然后重新启动 docker-compose 以清理空间。我使用了一个 cron 每天运行一次的脚本 shell:

rm /var/log/cron/log_prodTEST.log
cd /opt/test/metrics
/usr/local/bin/docker-compose up --build --force-recreate -d -T

显然,通过使用 docker-compose 的完整路径,我可以在玉米壳内使用它