2016-08-04 2 views
9

Я пытаюсь запустить docker-compose используя sudo.sudo: docker-compose: command не найден

У меня есть докеры и докеры, установленные на Ubuntu 16.01.

Из-за ошибки при попытке загрузить композицию с помощью curl я закончил установку с помощью pip.

Docker версия 1.12.0, построить 8eab29e докер-Compose версия 1.8.0, построить 94f7016

Тем не менее, когда я пытаюсь запустить докер-компоновать с Судо я получаю следующее (используя 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 
+1

* Где * установлен 'docker-compose'? Вы установили его с помощью пакета (в этом случае 'dpkg -s docker-compose' проверит это) или вы установили какой-либо другой механизм? – larsks

+0

@larsks - обновленный – Magick

+0

Та же ошибка, команда не найдена? Вы пытались «sudo /home/user/.local/bin/docker-compose ...»? – BMitch

ответ

15

Выход dpkg -s ... демонстрирует, что docker-compose не установлен из пакета. Без дополнительной информации от вас есть по крайней мере две возможности:

  1. докер-Compose просто не установлен вообще, и вам необходимо установить его.

    Решение здесь прост: установить docker-compose.

  2. docker-compose установлен в вашем каталоге $HOME (или в другом месте не на корневом $PATH).

    В этом случае существует несколько решений. Проще всего, наверное, заменить:

    sudo docker-compose ... 
    

    С:

    sudo `which docker-compose` ... 
    

    Это будет вызывать sudo полный путь к docker-compose.

    Вы также можете установить docker-compose в общесистемный каталог, такой как /usr/local/bin.

+0

Я хочу особо поблагодарить вас за то, что вы включили быстрое простое решение, используя задние тиковые одинарные кавычки sudo 'which docker-compose'. , , «Прекрасно работает с back tic, не получается ни с чем другим ... – zipzit

6

Если вы испробовали установки через официальную страницу докер-COMPOSE, где вам нужно загрузить двоичный с помощью завиток:

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 

Если докер-Compose устанавливается с помощью питона-пип

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

попробуйте использовать pip show --files docker-compose, чтобы увидеть, где он установлен.

Если докер-Compose установлен в пути пользователя, а затем попробуйте:

sudo "PATH=$PATH" docker-compose 

Как я вижу из обновленной должности, установлен докер-Compose в пути /home/user/.local/bin пользователя, и если этот путь не в вашей локальной путь $PATH, то попробуйте:

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

Существует несколько способов установить его, пип - один, но он также может быть загружен как двоичный файл. – BMitch

+0

Я использовал pip для установки. – Magick

+0

FYI, это нормально, чтобы 'pip install docker-compose' без sudo - это будет просто установить для вашего локального пользователя под' $ HOME/.local/bin' - после этого просто обновите свой $ PATH в .bashrc/.zshrc/и т. д., чтобы включить его: 'export PATH = $ HOME/.local/bin: $ PATH' – zamnuts

4

Я оставлю это здесь в качестве возможного исправления, работал для меня, по крайней мере, и может помочь другим. Довольно уверен, что это будет только исправление для Linux.

Я решил не идти с установкой pip и идти с версией github (вариант один в руководстве по установке).

Вместо того, чтобы поместить скопированную директорию для компоновки докеров в/usr/local/bin/docker-compose из команды curl/github, я пошел с/usr/bin/docker-compose, который является местоположением самого Docker и заставит программу работать в корне. Таким образом, он работает в корне и sudo, но теперь не будет работать без sudo, так что это противоположный эффект, который вы хотите запустить как пользователь в любом случае.

+0

Так же, как и перемещение докеров в другое место, это помогает добавить символическую ссылку:' ln -s/usr/bin/docker-compose/usr/local/bin/docker-compose' –