2016-08-04 25 views
9

Próbuję uruchomić kompresowanie dockera za pomocą sudo.sudo: docker-compose: polecenie nie znaleziono

Mam zainstalowane docker i docker-compose na Ubuntu 16.01.

Z powodu błędu podczas próby pobrania utworu za pomocą curl, zainstalowałem go za pomocą pip.

Docker wersja 1.12.0, budować 8eab29e doker-komponować wersja 1.8.0, budować 94f7016

Jednak kiedy próbuję uruchomić doker-komponować z sudo uzyskać następujące (za pomocą sudo z docker jest w porządku)

sudo: docker-compose: command not found 

Przypuszczam, że istnieją różne definicje tego, co "zainstalowane" oznacza. Korzystam z funkcji dokowania na tym samym komputerze, który twierdzi, że nie jest zainstalowany.

$ 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 

Próbowałem następujące - ale wciąż ten sam błąd:

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

* Gdzie * zainstalowane jest 'docker-compose'? Czy zainstalowałeś go za pomocą pakietu (w takim przypadku, 'dpkg -s docker-compose' by to zweryfikował), czy też zainstalowałeś go za pomocą jakiegoś innego mechanizmu? – larsks

+0

@larsks - zaktualizowano – Magick

+0

Ten sam błąd, polecenie nie znaleziono? Czy próbowałeś 'sudo /home/user/.local/bin/docker-compose ...'? – BMitch

Odpowiedz

15

Wyjście dpkg -s ... pokazuje, że docker-compose nie jest zainstalowany z pakietu. Bez dodatkowych informacji od ciebie są co najmniej dwie możliwości:

  1. po prostu nie jest zainstalowany docker-compose i trzeba go zainstalować. Jest to proste rozwiązanie: zainstaluj docker-compose.

  2. Docker-compose jest instalowany w katalogu $HOME (lub w innym miejscu niż root użytkownika $PATH).

    Istnieje kilka rozwiązań w tym przypadku. Najprostszym jest prawdopodobnie wymienić:

    sudo docker-compose ... 
    

    Z:

    sudo `which docker-compose` ... 
    

    Wywoła to sudo z pełną ścieżką do docker-compose.

    Można alternatywnie zainstalować docker-compose w katalogu ogólnosystemowym, takim jak /usr/local/bin.

+0

Chciałbym szczególnie podziękować za szybkie rozwiązanie za pomocą back tic pojedynczych cudzysłowów "sudo", które buduje dokowanie ". . . "Działa wspaniale z tylnym ticem, nie działa z niczym innym ... – zipzit

6

Jeśli próbowałeś instalacji za pośrednictwem oficjalnej strony doker-komponować, gdzie trzeba pobrać binarny używając Zwijanie:

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

Potem nie zapomnij dodać wykonywalny flagę binarnego:

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

Jeśli doker-komponować jest instalowany przy użyciu python-pip

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

spróbuj użyć pip show --files docker-compose, aby zobaczyć, gdzie jest zainstalowany.

Jeśli doker-komponować jest zainstalowany w ścieżce użytkownika, a następnie spróbuj:

sudo "PATH=$PATH" docker-compose 

Jak widzę z zaktualizowanym postu, doker-komponować jest zainstalowany w ścieżce użytkownika /home/user/.local/bin i jeśli ta ścieżka nie jest w lokalnej ścieżka $PATH, a następnie spróbuj:

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

Istnieje wiele sposobów na zainstalowanie go, pip jest jeden, ale można go również pobrać jako plik binarny. – BMitch

+0

Użyłem PIP do instalacji komponowania. – Magick

+0

FYI, to jest OK, aby 'pip install docker-compose' bez sudo - to po prostu zainstaluje dla twojego lokalnego użytkownika w' $ HOME/.local/bin' - potem, po prostu zaktualizuj swoją $ PATH w .bashrc/.zshrc/itd., aby go uwzględnić: 'export PATH = $ HOME/.local/bin: $ PATH' – zamnuts

4

zostawię to tutaj jako ewentualnego fix, pracował dla mnie przynajmniej, a może pomóc innym. Na pewno będzie to naprawić tylko linux.

Postanowiłem nie iść z instalacją pip i iść z wersją Github (opcja pierwsza w instrukcji instalacji).

Zamiast umieszczać skopiowany katalog dokowania w katalogu/usr/local/bin/docker-compose z komendy curl/github, wybrałem opcję/usr/bin/docker-compose, która jest lokalizacją samego Docker'a i wymusi uruchomienie programu w katalogu głównym. Działa więc w root i sudo, ale teraz nie będzie działać bez sudo, tak odwrotnego efektu, jaki i tak chcesz uruchomić jako użytkownik.

+0

Oprócz przenoszenia dokera do innej lokalizacji, pomaga dodać dowiązanie symboliczne:' ln -s/usr/bin/docker-compose/usr/local/bin/docker-compose' –