2016-08-04 33 views
9

Ich versuche, docker-compose mit sudo ausführen.sudo: docker-compose: Befehl nicht gefunden

Ich habe sowohl Docker und Docker-Compose auf Ubuntu 16.01 installiert.

Aufgrund eines Fehlers beim Herunterladen von Compose mit curl, habe ich es mit pip installiert.

Docker Version 1.12.0, baut 8eab29e Docker-compose Version 1.8.0, Build 94f7016

Doch wenn ich versuche zu laufen Docker-komponieren mit sudo erhalte ich den folgenden (mit sudo mit Docker ist in Ordnung)

sudo: docker-compose: command not found 

Ich nehme an, es gibt unterschiedliche Definitionen von was "installiert" bedeutet. Ich habe docker-compose auf demselben Computer verwendet, auf dem behauptet wird, dass es nicht installiert ist.

$ 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 

Ich habe versucht, die folgend - aber immer noch die gleiche Fehlermeldung erhalten:

$ chmod +x /home/username/.local/bin/docker-compose 
$ chmod +x /home/anton/.local/lib/python2.7/site-packages 
+1

* Wo ist 'docker-compose' installiert? Haben Sie es über ein Paket installiert (in diesem Fall würde dies "dpkg -s docker-compose" bestätigen), oder haben Sie es über einen anderen Mechanismus installiert? – larsks

+0

@larks - aktualisiert – Magick

+0

Der gleiche Fehler, Befehl nicht gefunden? Hast du versucht, 'sudo /home/user/.local/bin/docker-compose ...'? – BMitch

Antwort

15

Die Ausgabe von dpkg -s ... zeigt, dass docker-compose nicht aus einem Paket installiert ist. Ohne weitere Informationen von Ihnen gibt es mindestens zwei Möglichkeiten:

  1. Docker-compose einfach ist gar nicht installiert, und Sie müssen es installieren.

    Die Lösung hier ist einfach: docker-compose installieren.

  2. docker-compose ist in Ihrem Verzeichnis $HOME installiert (oder an einem anderen Ort als $PATH).

    In diesem Fall gibt es mehrere Lösungen. Am einfachsten ist es wahrscheinlich zu ersetzen:

    sudo docker-compose ... 
    

    mit:

    sudo `which docker-compose` ... 
    

    Diese sudo mit dem vollständigen Pfad zu docker-compose nennen.

    Sie könnten alternativ docker-compose in ein systemweites Verzeichnis wie /usr/local/bin installieren.

+0

Ich möchte Ihnen besonders dafür danken, dass Sie die schnelle einfache Lösung, die das Back Tic verwendet, einzelne Zitate 'sudo 'welche Docker-komponieren'. . . 'Funktioniert gut mit dem Back Tic, schlägt mit nichts anderem ... – zipzit

6

Wenn Sie versucht haben, über die offizielle Docker-compose Seite installieren, wo Sie das binäre mit curl herunterladen müssen:

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

Dann vergessen Sie nicht ausführbaren Flag auf den binären hinzuzufügen:

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

Wenn docker-compose installiert ist mit python-pip

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

versuchen Sie mit pip show --files docker-compose zu sehen, wo es installiert ist.

Wenn Docker-compose in Benutzerpfad installiert ist, dann versuchen:

sudo "PATH=$PATH" docker-compose 

Als ich von Ihrem aktualisierten Beitrag sehen, Docker-compose in Benutzerpfad installiert ist /home/user/.local/bin und wenn dieser Pfad nicht in Ihrem lokalen ist $PATH Pfad, dann versuchen:

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

Es gibt mehrere Möglichkeiten, es zu installieren, Pip ist eins, aber es könnte auch als Binärdatei heruntergeladen werden. – BMitch

+0

Ich habe pip verwendet, um komponieren zu installieren. – Magick

+0

FYI, es ist OK zu 'pip installieren docker-compose' ohne sudo - dies wird nur für Ihren lokalen Benutzer unter' $ HOME/.local/bin' installieren - danach aktualisieren Sie einfach Ihre $ PATH in .bashrc/.zshrc/etc, um es aufzunehmen: 'export PATH = $ HOME/.local/bin: $ PATH' – zamnuts

4

ich das hier als mögliche Lösung verlassen, zumindest für mich gearbeitet und vielleicht andere helfen. Ziemlich sicher, das wäre ein Linux-Fix.

Ich entschied mich, nicht mit der Pip-Installation und gehen Sie mit der Github-Version (Option eins in der Installationsanleitung).

Anstatt das kopierte docker-compose-Verzeichnis in/usr/local/bin/docker-compose vom curl/github-Befehl zu platzieren, ging ich mit/usr/bin/docker-compose, wo sich Docker selbst befindet wird das Programm zwingen, in root zu laufen. So funktioniert es in root und sudo, aber jetzt wird nicht ohne sudo so entgegengesetzte Wirkung funktionieren, die Sie als Benutzer sowieso ausführen möchten.

+0

Neben dem Verschieben von docker-compose zum anderen Ort hilft es, einen symbolischen Link hinzuzufügen:' ln -s/usr/bin/docker-komponieren/usr/local/bin/docker-komponieren –