sudo:docker-compose:command not found

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

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

由于尝试使用curl下载撰写时出现错误,我最终使用pip进行安装。

Docker版本1.12.0,构build8eab29e docker-compose版本1.8.0,构build94f7016

然而,当我尝试运行docker-compose与sudo我得到以下(与docker使用sudo是好的)

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/anton/.local/lib/python2.7/site-packages 

dpkg -s ...的输出显示docker-compose没有从软件包安装。 没有更多的信息,至少有两种可能性:

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

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

  2. docker-compose安装在你的$HOME目录下(或者其他位置不在root的$PATH )。

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

     sudo docker-compose ... 

    附:

     sudo `which docker-compose` ... 

    这将调用sudodocker-compose的完整路径。

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

如果您已经尝试通过官方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 

那么不要忘记把可执行标志添加到二进制文件中:

 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 

我会在这里留下这个可能的解决方案,至少为我工作,可能会帮助别人。 很确定这将是一个Linux唯一的修复。

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

而不是从curl / github命令将复制的docker-compose目录放到/ usr / local / bin / docker-compose中,而是使用Docker自身的位置/ usr / bin / docker-compose来强制程序以root身份运行。 所以它在根和sudo中工作,但现在不工作没有sudo如此相反的效果,这就是你想要运行它作为一个用户反正。