Zainstalowałem docker-machine 0.1.0 i docker-compose 1.1.0 w systemie Mac OS 10.8.5.
Docker-machine działa normalnie i może łączyć się przez docker-machine ssh.
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
dev * virtualbox Running tcp://192.168.99.100:2376
Jednak nie można połączyć się z docker-compose.
$ docker-compose up
Nie można połączyć się z demonem Dockera pod adresem http + unix: //var/run/docker.sock - czy to działa?
Jeśli znajduje się w niestandardowej lokalizacji, podaj adres URL za pomocą zmiennej środowiskowej DOCKER_HOST.
Mój plik Dockerfile i docker-compose.yml są tutaj.
Dockerfile
FROM centos:centos7
DOCKER_HOST tcp://192.168.99.100:2376
docker-compose.yml
web:
build: .
Dlaczego nie można się połączyć? Jakieś pomysły?
docker
docker-compose
DIGITALSQUAD
źródło
źródło
docker-machine
jako root? Właśnie przyszedłem tutaj z tym samym problemem na Ubuntu i to były uprawnienia w gnieździe - załatwiły sprawęsudo
.sudo service docker restart
albosudo service docker start
rozwiązałem to tym.Odpowiedzi:
Maszyna Docker jest uruchomiona. Ale musisz wyeksportować trochę środowiska, aby połączyć się z komputerem Docker. Domyślnie
docker
klient CLI próbuje komunikować się z demonem przy użyciuhttp+unix://var/run/docker.sock
(jak pokazano w komunikacie o błędzie).Wyeksportuj poprawne zmienne środowiskowe za pomocą
eval $(docker-machine env dev)
i spróbuj ponownie. Możesz także uruchomić,docker-machine env dev
aby zobaczyć zmienne środowiskowe, które wyeksportuje. Zauważ, że jednym z nich jestDOCKER_HOST
, tak jak sugeruje komunikat o błędzie, może być konieczne ustawienie.źródło
eval "$(docker-machine env default)"
) w swoim bin / postactivate, aby mieć pewność, że jest zawsze aktualne.$ eval $(docker-machine env dev) Command 'docker-machine' not found, but can be installed with: sudo snap install docker
Proste rozwiązanie dla mnie:
sudo docker-compose up
UPDATE 2016-3-14: W pewnym momencie procesu instalacji dockera (lub docker-compose?) Pojawia się sugestia i przykład dodania nazwy użytkownika do grupy „docker”. Pozwala to uniknąć konieczności używania „sudo” przed wszystkimi poleceniami dockera, na przykład:
Przyjrzyj się uważnie wynikom poleceń instalacji (zarówno docker, jak i 2nd install dla docker-compose), a znajdziesz niezbędny krok. Jest to również udokumentowane tutaj: https://subosito.com/posts/docker-tips/
UPDATE 2017-3-9
Instrukcje instalacji Dockera zostały tutaj zaktualizowane.
Kroki poinstalacyjne dla systemu Linux
Ta sekcja zawiera opcjonalne procedury konfigurowania hostów systemu Linux do lepszej współpracy z platformą Docker.
Zarządzaj Dockerem jako użytkownik inny niż root
Demon Dockera wiąże się z gniazdem Unix zamiast z portem TCP. Domyślnie właścicielem gniazda Unix jest użytkownik root, a inni użytkownicy mogą uzyskać do niego dostęp tylko za pomocą sudo. Demon Dockera zawsze działa jako użytkownik root.
Jeśli nie chcesz używać sudo podczas korzystania z polecenia docker, utwórz grupę uniksową o nazwie docker i dodaj do niej użytkowników. Kiedy demon Dockera uruchamia się, umożliwia grupie docker prawo własności gniazda Unix do odczytu / zapisu.
Aby utworzyć grupę Dockera i dodać użytkownika:
To polecenie pobiera obraz testowy i uruchamia go w kontenerze. Gdy kontener jest uruchomiony, wyświetla komunikat informacyjny i kończy pracę.
źródło
newgrp docker
sudo docker-compose up
”. Kiedy próbuję, otrzymuję:sudo: docker-compose: command not found
Jeśli zacząłeś używać dockera
sudo
, powinieneś uruchomić docker-compose up zsudo
Like:sudo docker-compose up
źródło
sudo docker-compose build
zamiast biegałemdocker-compose build
.Domyślnie demon Dockera zawsze działa jako użytkownik root, dlatego musisz dołączyć
sudo
do swoich poleceń Dockera .Jeśli nie chcesz używać sudo podczas korzystania z polecenia docker, utwórz grupę uniksową o nazwie docker i dodaj do niej użytkowników. Kiedy demon Dockera uruchamia się, umożliwia grupie docker prawo własności gniazda Unix do odczytu / zapisu.
Aby utworzyć grupę Dockera i dodać użytkownika:
Utwórz grupę docker.
$ sudo groupadd docker
Dodaj użytkownika do grupy Docker.
$ sudo usermod -aG docker $USER
Wyloguj się i zaloguj ponownie, aby ponownie ocenić członkostwo w grupie.
Sprawdź, czy możesz dokować polecenia bez sudo.
$ docker run hello-world
To polecenie pobiera obraz testowy i uruchamia go w kontenerze. Gdy kontener jest uruchomiony, wyświetla komunikat informacyjny i kończy pracę.
Kroki opisane powyżej pochodzą z oficjalnej dokumentacji Dockera .
źródło
docker-compose
jako właściciel/usr/local/bin/docker-compose
, a następnie ponownie uruchom de servicegroup
członkostwo można odświeżyć,su - $USER
aby nie wylogowywać się iKiedy pojawi się błąd :
Rozwiązanie byłoby:
Najpierw spróbuj sprawdzić, czy usługa Docker jest uruchomiona i działa zgodnie z oczekiwaniami na komputerze zdalnym / lokalnym:
sudo service docker status
jeśli nie - uruchom
sudo service docker start
lubsudo systemctl start docker
(zależy od niektórych wersji Linuksa, zobacz instrukcje Dockera ).Po drugie, uruchom docker jako sudo
sudo docker-compose up
źródło
sudo systemctl start docker
- aby uruchomić usługę Docker.sudo docker-compose up
po tym.Mam Fedorę 26 i próbując rozwiązać ten sam problem, w końcu wszedłem do Docker Compose na stronie programistów Fedory, a następnie do Dockera na stronie deweloperów Fedory , co mi pomogło.
Prawdopodobnie usługa dockera uważana przez społeczność za uruchamianie systemu i ciągłe działanie w tle, ale dla mnie nie było to takie oczywiste i dlatego mogę pomyśleć o tym, dlaczego nie ma popularnej odpowiedzi, takiej jak ta.
Na stronie deweloperów Fedory znajduje się instrukcja, jak włączyć Docker do uruchamiania systemu:
sudo systemctl enable docker
źródło
systemctl
sięlaunchctl
jeśli działa na Mac.Jeśli korzystasz z systemu Linux, być może nie
docker-machine
zainstalowałeś go, ponieważ jest on instalowany domyślnie tylko na komputerach z systemem Windows i Mac.Jeśli tak, musisz przejść na stronę: https://docs.docker.com/machine/install-machine/, aby znaleźć instrukcje, jak zainstalować go w swojej wersji systemu Linux.
Po zainstalowaniu uruchom ponownie,
docker-compose up
zanim spróbujesz cokolwiek wymienionego powyżej.Mam nadzieję, że to komuś pomoże. To zadziałało w przypadku mojej instalacji devilbox w Fedorze 25.
źródło
Oprócz dodawania użytkowników do grupy docker, aby uniknąć
sudo
wielokrotnego wpisywania , możesz także utworzyć alias dladocker
poleceń takich jak:źródło
jeśli używasz docker-machine, musisz aktywować środowisko za pomocą zmiennej env . w przypadku, gdy nie używasz docker-machine, a następnie uruchom polecenia za pomocą sudo
źródło
Czy ktoś sprawdził log?
W moim przypadku komunikat o błędzie w
/var/log/upstart/docker.log
:Warto wspomnieć, że miałem włączony VPN, więc:
$ sudo service openvpn stop $ sudo service docker restart $ docker-compose up|start $ sudo service openvpn start
było rozwiązaniem.źródło
Odpowiedź od @srfrnk działa dla mnie.
W mojej sytuacji miałem następny plik docker-compose.yml:
./docker-runtime
właściciel i grupa -root
gdy inny właściciel plików - mój użytkownik. Kiedy próbowałem budowaćnginx
Dodałem
./docker-runtime
do.dockerignore
i to jest mój problem rozwiązany.źródło
podczas pracy
docker-compose pull
- wyświetlałem się poniżej błęduczy to działa?
rozwiązanie -
problem rozwiązany
źródło
Miałem te same objawy.
Tyle tylko, że zdarzyło się to tylko podczas
docker-compose build
docker ps
pracy. Stało się z wersją2.x
, jak również3.x
.docker
Usługa została ponownie uruchomiona, a następnie maszyna ... Nawet ponownie zainstalowanadocker
+docker-compose
.Próbowałem wszystkiego, ale nic nie pomogło.
Wreszcie spróbowałem zbudować plik Dockerfile „ręcznie” przy użyciu
docker build
.Najwyraźniej miałem problem z uprawnieniami do pliku / folderu w
Docker
kontekście. Próbował odczytać kontekst podczas uruchamiania kompilacji i nie powiodło się z wyświetleniem odpowiedniego komunikatu o błędzie. Jednak ten komunikat o błędzie nie rozprzestrzenił się, dodocker-compose
którego wyświetla się tylkoCouldn't connect to Docker daemon at http+unix://var/run/docker.sock - is it running?
Stwierdziwszy, że rozwiązaniem było po prostu dodanie pliku / folderu do
.dockerignore
pliku, ponieważ nie był on potrzebny do kompilacji. Innym rozwiązaniem mogłoby być dochown
lubchmod
to.W każdym razie może to pomóc komuś napotkać ten sam problem, z którym naprawdę nie ma nic wspólnego,
docker
i wyświetlenie wprowadzającego w błąd komunikatu o błędzie.źródło
chown
/chmod
naprawiłem to. Okropny komunikat o błędzie, ale pracują nad tym. Zobacz github.com/docker/compose/issues/5318$ sudo docker-compose up
Wykonałem kroki, jak w powyższej odpowiedzi, aby dodać $ USER do grupy docker. nie chciałem dodawać nowej grupy dokowanej, ponieważ w mojej instalacji Dockera grupa o nazwie docker została utworzona automatycznie.
Docker CE jest zainstalowany i działa. Grupa Dockera została utworzona, ale nie są do niej dodani żadni użytkownicy. Aby uruchamiać polecenia Dockera, musisz użyć sudo. Przejdź do postinstalacji systemu Linux, aby umożliwić użytkownikom nieuprzywilejowanym uruchamianie poleceń platformy Docker i wykonywanie innych opcjonalnych czynności konfiguracyjnych.
ale użycie docker-compose up też nie działało. Dał ten sam poprzedni błąd. Tak więc w moim przypadku (Ubuntu 18.10) sudo docker-compose up naprawiło problem.
ps: @Tiw dzięki za radę.
źródło
Wiem, że to głupie, ale w moim przypadku po prostu próbowałem
sudo
i zadziałało jak urok.w twoim przypadku po prostu spróbuj:
$ sudo docker-compose up
źródło
Spróbuj tego:
sudo ln -s / usr / local / bin / docker-compose / usr / bin / docker-compose
źródło
Rozwiązałem problem, wykonując następujące czynności
teraz docker-compose up działa
źródło
Dla mnie zacząłem aktualizować Dockera i anulowałem w połowie. Nie zauważyłem, że Docker nie działa (jeśli tak, na górnym pasku nawigacyjnym mojego Macbooka jest ikona obok pozostałej baterii, czasu itp.). Po uruchomieniu i zakończeniu aktualizacji
docker-compose up
działało ponownie!źródło
Moja konfiguracja ma dwa przypadki tego błędu:
__pycache__
pliki utworzone przez użytkownika root po przeprowadzeniu testów integracyjnych wewnątrz kontenera są niedostępne dla dockera (informuje o oryginalnym problemie) i docker-compose (mówi niejednoznacznie o hoście dockerowym);microk8s
zablokował mój port, dopóki go nie zatrzymałem.źródło
Spróbuj uruchomić
dockerd
lub,sudo dockerd
jeśli to konieczne, najpierw uruchomić demona. Jeśli zacznieszdockerd
zsudo
was może chcesz uruchomićdocker-compose up
zsudo
również. inaczej jest dobrze.Działające rozwiązanie z https://github.com/docker/compose/issues/4181
źródło
wylogowanie się, a następnie ponowne zalogowanie mi pomogło. W moim przypadku była to nowa instalacja, utworzyłem nowego użytkownika, nową grupę, a następnie dodałem użytkownika do grupy docker.
wyjście wyjście
następnie ssh ponownie do serwera
źródło
Poniższe zadziałało dla mnie, nie jestem pewien, która część załatwiła sprawę:
źródło