Ich versuche, Docker-Compose mit Sudo auszuführen.
Ich habe sowohl Docker als auch Docker-Compose auf Ubuntu 16.01 installiert.
Aufgrund eines Fehlers beim Versuch, compose mit curl herunterzuladen, habe ich es schließlich mit pip installiert.
Docker-Version 1.12.0, Build 8eab29e Docker-Compose-Version 1.8.0, Build 94f7016
Wenn ich versuche, Docker-Compose mit Sudo auszuführen, bekomme ich Folgendes (die Verwendung von Sudo mit Docker ist in Ordnung)
Sudo: docker-compose: command not found
Ich nehme an, es gibt unterschiedliche Definitionen dessen, was "installiert" bedeutet. Ich habe Docker-Compose auf demselben Computer verwendet, der behauptet, 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 folgendes versucht - bekomme aber immer noch den gleichen Fehler:
$ chmod +x /home/username/.local/bin/docker-compose
$ chmod +x /home/anton/.local/lib/python2.7/site-packages
Auf Ubuntu 16.04
Ich habe dieses Problem folgendermaßen behoben: Siehe Dokumentation zu Docker Compose
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
Nachdem Sie den Befehl curl ausgeführt haben, wird docker-compose in den Ordner eingefügt
/ usr/local/bin
welches nicht auf dem PFAD ist Um es zu beheben, erstelle einen symbolischen Link:
Sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Und jetzt, wenn Sie dies tun: docker-compose --version
Sie werden sehen, dass Docker-Compose jetzt auf dem Pfad ist
Die Ausgabe von dpkg -s ...
zeigt, dass docker-compose
nicht aus einem Paket installiert wird. Ohne weitere Informationen von Ihnen gibt es mindestens zwei Möglichkeiten:
docker-compose ist einfach nicht installiert und muss installiert werden.
Die Lösung hier ist einfach: Installieren Sie docker-compose
.
docker-compose ist in Ihrem $HOME
-Verzeichnis installiert (oder einem anderen Speicherort, der sich nicht im root-Code von $PATH
befindet).
In diesem Fall gibt es mehrere Lösungen. Am einfachsten ist es wahrscheinlich zu ersetzen:
Sudo docker-compose ...
Mit:
Sudo `which docker-compose` ...
Dadurch wird Sudo
mit dem vollständigen Pfad zu docker-compose
aufgerufen.
Alternativ können Sie docker-compose
in ein systemweites Verzeichnis wie /usr/local/bin
installieren.
Wenn Sie die Installation über die offizielle Docker-Compose-Seite versucht haben, wo Sie die Binärdatei 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
Vergessen Sie nicht, der Binärdatei ein ausführbares Flag hinzuzufügen:
chmod +x /usr/local/bin/docker-compose
Wenn Docker-Compose mit Python-Pip installiert wird
Sudo apt-get -y install python-pip
Sudo pip install docker-compose
versuchen Sie es mit pip show --files docker-compose
, um zu sehen, wo es installiert ist.
Wenn Docker-Compose im Benutzerpfad installiert ist, versuchen Sie Folgendes:
Sudo "PATH=$PATH" docker-compose
Wie ich aus Ihrem aktualisierten Beitrag sehe, wird docker-compose im Benutzerpfad /home/user/.local/bin
installiert. Wenn dieser Pfad nicht in Ihrem lokalen Pfad $PATH
enthalten ist, versuchen Sie Folgendes:
Sudo "PATH=$PATH:/home/user/.local/bin" docker-compose
Ich werde das hier als mögliche Lösung belassen, zumindest für mich gearbeitet und vielleicht anderen helfen. Ziemlich sicher, dass dies nur ein Linux-Fix wäre.
Ich entschied mich nicht für die Pip-Installation und für die Github-Version (Option eins in der Installationsanleitung).
Anstatt das kopierte Docker-Compose-Verzeichnis mit dem Befehl curl/github in/usr/local/bin/docker-compose zu platzieren, habe ich mich mit/usr/bin/docker-compose befunden, wo sich Docker selbst befindet in root laufen. Es funktioniert also in root und Sudo, aber jetzt funktioniert es nicht ohne den gegenteiligen Effekt von Sudo, den Sie sowieso als Benutzer ausführen möchten.
Ich habe das gleiche Problem, ich habe das Problem gelöst:
Schritt-1: Laden Sie Docker-Compose mit folgendem Befehl herunter.
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
Schritt-2: Befehl ausführen
chmod +x /usr/local/bin/docker-compose
Schritt 3: Überprüfen Sie die Docker-Compose-Version
docker-compose --version
Oder fügen Sie einfach Ihren binären Pfad in den PFAD ein. Am Ende der Basis:
...
export PATH=$PATH:/home/user/.local/bin/
speichern Sie die Datei und führen Sie Folgendes aus:
source .bashrc
und der Befehl wird funktionieren.