sudo:docker-compose:找不到命令

Mag*_*ick 34 linux ubuntu docker docker-compose

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

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

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

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

然而,当我尝试使用sudo运行docker-compose时,我得到以下内容(使用带有docker的sudo很好)

sudo: docker-compose: command not found
Run Code Online (Sandbox Code Playgroud)

我想对"安装"的含义有不同的定义.我一直在声称没有安装的同一台计算机上使用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
Run Code Online (Sandbox Code Playgroud)

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

$ chmod +x /home/username/.local/bin/docker-compose
$ chmod +x /home/anton/.local/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)

pel*_*can 67

在Ubuntu 16.04上

以下是我解决此问题的方法:参考Docker Compose文档

  1. 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

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

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

在/ usr/local/bin目录

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

  1. PATH

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

你会看到docker-compose现在在PATH上了

  • 似乎有很多工作,我只是运行这个命令来解决问题:> sudo apt install docker-compose (8认同)
  • 这也适用于Mac-谢谢!:) (2认同)
  • 添加符号修复了它 (2认同)

lar*_*sks 18

未从包安装的dpkg -s ...演示的输出docker-compose.如果没有您的更多信息,至少有两种可能性:

  1. docker-compose根本就没有安装,你需要安装它.

    这里的解决方案很简单:安装docker-compose.

  2. docker-compose安装在您的$HOME目录中(或不在root用户的其他位置$PATH).

    在这种情况下有几种解决方案.最简单的可能是取代:

    sudo docker-compose ...
    
    Run Code Online (Sandbox Code Playgroud)

    附:

    sudo `which docker-compose` ...
    
    Run Code Online (Sandbox Code Playgroud)

    这将调用sudo完整的路径docker-compose.

    您也可以安装docker-compose到系统范围的目录中,例如/usr/local/bin.

  • 我要特别感谢您使用后面的单引号 'sudo `which docker-compose` 提供了快速简单的解决方案。。。’对背部抽动症效果很好,但对其他任何事情都失败了...... (2认同)

use*_*501 12

如果您使用的是更新版本的 docker,则可能需要docker compose而不是docker-compose.

例如,我在 Debian 11 上安装了 docker。

$ docker compose version
Docker Compose version v2.17.2
Run Code Online (Sandbox Code Playgroud)


Van*_*gaS 11

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

curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
Run Code Online (Sandbox Code Playgroud)

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

chmod +x /usr/local/bin/docker-compose
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get -y install python-pip
sudo pip install docker-compose
Run Code Online (Sandbox Code Playgroud)

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

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

sudo "PATH=$PATH" docker-compose
Run Code Online (Sandbox Code Playgroud)

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

sudo "PATH=$PATH:/home/user/.local/bin" docker-compose
Run Code Online (Sandbox Code Playgroud)


小智 9

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

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

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

  • @VinceBowdren我认为你的意思是相反的:`ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose` (3认同)

Sas*_*ota 8

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


小智 5

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

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

     1.  sudo su

     2. 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
Run Code Online (Sandbox Code Playgroud)

步骤2:执行命令

    chmod +x /usr/local/bin/docker-compose
Run Code Online (Sandbox Code Playgroud)

步骤3:检查docker-compose版本

     docker-compose --version
Run Code Online (Sandbox Code Playgroud)


Was*_*eem 5

很简单,重新安装docker-compose即可。它将解决这个问题。

sudo apt install docker-compose
Run Code Online (Sandbox Code Playgroud)