Próbuję dowiedzieć się o Dockerze , ale wciąż otrzymuję tajemnicze (dla mnie) komunikaty o błędach.
Być może najprostszym przykładem tego jest próba wydrukowania zainstalowanej wersji Dockera:
$ sudo docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
FATA[0000] Get http:///var/run/docker.sock/v1.16/version:
dial unix /var/run/docker.sock: no such file or directory.
Are you trying to connect to a TLS-enabled daemon without TLS?
Właśnie przeglądałem instrukcję użytkownika i dokładnie wykonuję każdy krok, więc jestem zaskoczony, że dostałem ten komunikat ... Co powinienem teraz zrobić?
Właśnie zauważyłem, że jeśli nie używam sudo
, nie dostaję błędu:
$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.3.3
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
Server version: 1.4.1
Server API version: 1.16
Go version (server): go1.3.3
Git commit (server): 5bc2ff8
Oczywiście nie jest to rozwiązanie, ponieważ być może będę musiał skorzystać sudo
z drogi ...
Właśnie znalazłem inną stronę z napisem „ Jeśli używasz OS X , nie powinieneś używać sudo
”. Nie wiem, czy mają na myśli tylko ten przykład, czy ogólnie.
boot2docker
), chociaż OS X nie jest wyraźnie wymieniony w pytaniu lub tagach. Jeśli ktoś jest zainteresowany ogólną odpowiedzią, proszę zobaczyć moją odpowiedź.Odpowiedzi:
Dla mnie bieganie
$(boot2docker shellinit 2> /dev/null)
naprawiło problem.Spowoduje to uruchomienie danych wyjściowych
boot2docker shellinit
polecenia (trzechset -x ...
wierszy) w bieżącej sesji terminala, dzięki czemudocker
polecenie będzie wiedziało, gdzie znaleźć maszynę wirtualną boot2docker.Dodanie
$(boot2docker shellinit 2> /dev/null)
do dolnej części~/.bash_profile
pliku sprawi, żedocker
polecenie zostanie skonfigurowane przy każdym otwarciu terminala.Dla osób korzystających z Fish skorupę:
boot2docker shellinit ^ /dev/null | source
.Pamiętaj, że
2> /dev/null
(i odpowiednik Fish^ /dev/null
) są opcjonalne. Jak sugerował @ pablo-fernandez, to ukrywaWriting ..
linie.źródło
boot2docker start
przed uruchomieniem powłoki init.Otrzymałem ten sam błąd na MacOS z sudo i bez niego.
Rozwiązałem to za pomocą:
PS: Dzięki Alan. Dowiedziałem się, że takie podejście jest zalecane w ich oficjalnej dokumentacji .
PS2: Czasami
boot2docker init
może być wymagane przed uruchomieniem dwóch poleceń (dziękuję Aaron).źródło
W moim przypadku (Linux Mint 17) robiłem różne rzeczy i nie jestem pewien, które z nich są całkowicie konieczne.
Dołączyłem brakujące pakiety Ubuntu:
Użytkownik został dodany do grupy
docker
:Uruchomiony demon (openSUSE tego właśnie potrzebuje)
Dzięki \ Uznanie autorstwa
Dzięki Usman Ismail , bo może to była ostatnia rzecz ...
Podziękowania również dla github @ MichaelJCole za rozwiązanie, które działało dla mnie, ponieważ nie sprawdzałem demona, kiedy czytałem komentarz Usmana.
Komentarz GitHub :
Dzięki postowi fredjean.net za zauważenie brakujących pakietów i zapomnienie o domyślnych instrukcjach instalacji Ubuntu oraz o innych sposobach Google
Dzięki komentarzowi brettof86 na temat openSUSE
źródło
sudo adduser $USER docker
. Sztuczka, abycurgroup=$(id -gn) && newgrp docker && newgrp $curgroup
Podkreślenie problemu jest proste - brak uprawnień do
/var/run/docker.sock
gniazda domeny unix.Od demon gniazdko opcji rozdziału z Docker Command Line odniesienia dla Döcker 1.6.0:
Kroki niezbędne do przyznania uprawnień użytkownikom są dobrze opisane w instrukcjach instalacji Dockera dla Fedory :
Wyloguj się i zaloguj ponownie, aby zastosować powyższe zmiany. Należy pamiętać, że pakiety Docker niektórych dystrybucji Linuksa (Ubuntu) już umieszczają się
/var/run/docker.sock
wdocker
grupie, przez co pierwsze dwa powyższe kroki nie są konieczne.W przypadku OS X
boot2docker
sytuacja jest inna; demon Docker działa wewnątrz maszyny wirtualnej, więcDOCKER_HOST
zmienna środowiskowa musi być ustawiona na tę maszynę wirtualną, aby klient Docker mógł znaleźć demona Docker. Odbywa się to poprzez uruchomienie$(boot2docker shellinit)
w powłoce.źródło
boot2docker shellinit
innymi poleceniami polega na tym, że to polecenie nie wprowadza żadnych zmian, a jedynie generuje (drukuje) polecenia, które należy uruchomić samodzielnie. Możesz uruchomićboot2docker shellinit
najpierw, a następnie ręcznie skopiować i uruchomić każde polecenie z jego danych wyjściowych. Łatwiej jest uruchomić wszystkie polecenia, uruchamiając jeboot2docker shellinit
w podprocesie (ze$()
składnią), ponieważ w ten sposób każdy wiersz danych wyjściowych jest automatycznie uruchamiany jako polecenie powłoki. Zobacz docs.docker.com/installation/mac/#from-your-command-line, gdzie pokazano to szczegółowo.sudo service docker status
. Na moim Ubuntu 14.04 nie działał po instalacji, co spowodowało błąd.Upewnij się, że demon Docker działa:
To naprawiło to dla mnie!
źródło
sudo service docker start
dla mniesystemctl enable docker.service
isystemctl start docker.service
Dla użytkowników system.d linux (Arch w moim przypadku)sudo service docker restart
dla mnie$ docker version
Zapytania komenda znajduje się wewnątrz pliku wykonywalnego Docker a nie na chodzie demon / usług.$ docker images or $ docker ps or $ docker pull centos
to polecenia wysyłające zapytania do uruchomionego demona / usługi dokującej.docker
lub użytkownik użył gosudo
przed poleceniem, np$ sudo docker images
. Nie wymaga połączenia TLS.Odwiedź stronę dokumentacji Docker Chroń gniazdo demona Docker .
Przewiń trochę do góry i znajdź
warning section
dla jasności.źródło
sudo usermod -a -G docker {username}
Będziesz musiał zrobić:
Następujące ustawienia rozwiązały problem:
źródło
eval "$(boot2docker shellinit)"
Możliwe, że nie masz jeszcze uprawnień do pliku. Zdarzyło mi się to po dodaniu się do
docker
grupy za pomocąale jeszcze nie wyloguj się.
Aby rozwiązać ten problem, możesz się ponownie zalogować lub użyć
sg docker "docker <subcommand> ..."
przed wylogowaniem.Jeśli jesteś w grupie
docker
IN/etc/group
, powinieneś być w stanie uruchomić go bez hasła pisania.https://dingyichen.wordpress.com/2015/02/05/docker-dial-unix-varrundocker-sock-no-such-file-or-directory-are-you-trying-to-connect-to-a- tls-enabled-daemon-without-tls /
źródło
Na Ubuntu po instalacji lxc-docker trzeba dodać użytkownika do doker grupy użytkowników:
Wynika to z uprawnień do plików gniazda:
NIE URUCHAMIAJ usermod BEZ „-a”, jak sugerowano w jednym z pozostałych komentarzy, w przeciwnym razie wyczyści to dodatkowe ustawienia grup i po prostu opuści grupę „dokerów”
Oto co się stanie:
źródło
TLDR : To pomogło mojej grupie spotkań w Pythonie ominąć ten problem, kiedy prowadziłem klinikę dotyczącą instalacji dokera i większość użytkowników korzystała z systemu OS X:
uruchom
export
polecenia, które daje ci wynikpowinienem powiedzieć, że to działa.
Kontekst (co doprowadziło nas do problemu)
Poprowadziłem klinikę dotyczącą instalacji dokera, a większość uczestników miała system OS X, natrafiliśmy na ten problem i przezwyciężyłem go na kilku komputerach. Oto kroki, które wykonaliśmy:
Najpierw zainstalowaliśmy homebrew (tak, niektórzy uczestnicy go nie mieli):
Potem mamy beczkę, której użyliśmy do zainstalowania virtualboksa, a następnie użyliśmy brew do zainstalowania dockera i boot2dockera (wszystkie wymagane dla OS X). Nie używaj sudo do brew. :
Rozwiązanie
Wtedy natrafiliśmy na problem, który dostał tutaj pytający. Następujące to naprawiło. Rozumiem, że
init
była to jednorazowa umowa, ale prawdopodobnie będziesz musiał działać przyup
każdym uruchomieniu dokera:Następnie, po
up
uruchomieniu, wydaje kilkaexport
poleceń. Skopiuj-wklej i uruchom je.Wreszcie
docker info
powinien powiedzieć, że jest poprawnie zainstalowany.Do pokazu
Reszta poleceń powinna to pokazać. (na Ubuntu Linux potrzebowałem sudo).
Powinieneś być na skorupce głównej w kontenerze:
Powrót do nashowego użytkownika:
Poszukaj około 12 cyfr szesnastkowego (0–9 lub af) identyfikatora w polu „Identyfikator kontenera”, np
456789abcdef
. Następnie możesz zatwierdzić zmianę i nazwać ją opisową nazwą, na przykładdescriptivename
:źródło
Wszystko, czego potrzebujesz, aby uruchomić Docker na Linux Ubuntu / Mint:
Opcjonalnie może być konieczne zainstalowanie dwóch dodatkowych zależności, jeśli powyższe nie działa:
źródło
sudo service docker start
rozwiązałem problem na moim Ubuntu 14.04.Wypróbowałem tutaj rozwiązania, a boot2docker nie działał.
Moje rozwiązanie: odinstaluj boot2docker na komputerze Mac, zainstaluj maszynę Wirtualną Centos 7 w VirtualBox i pracuj z Dockerem wewnątrz tej maszyny wirtualnej.
źródło
Dla mnie zadziałały następujące kroki:
docker run hello-world
kończy się niepowodzeniem z tym błędem, jak w pytaniu, ale działasudo docker run hello-world
.docker
grupysudo adduser user docker
. Następnie musisz ponownie uruchomić komputer lub użyćsu - user
(sprawdź za pomocągroups
polecenia, jeśli są wdocker
grupie).Następnie
hello-world
zaczął działać.Moja odpowiedź oparta jest na: Jak korzystać z dokera bez sudo? co wyjaśnia, co poszło nie tak.
źródło
Za to, co jest warte, wypróbowałem wszystkie rozwiązania zawarte w tym pytaniu i pokrewnym pytaniu i żadne nie rozwiązało mojego problemu, dopóki nie odinstalowałem i nie ponownie zainstalowałem VirtualBox . Ten proces uaktualnił VirtualBox z wersji 4.2.16 do 4.3.22 (mój poprzedni leżał nieużywany w systemie przez kilka miesięcy).
Wtedy
boot2docker
idocker
pracował bez żadnych innych zmian.źródło
Miałem ten sam problem. Prosty
service docker restart
rozwiązał problem.źródło
Demon Docker łączy się z gniazdem Unix zamiast z portem TCP. Domyślnie gniazdo Unix jest własnością użytkownika root, a inni użytkownicy mogą uzyskać do niego dostęp tylko za pomocą sudo. Demon Docker zawsze działa jako użytkownik root.
Wyloguj się i zaloguj ponownie, aby ponownie ocenić członkostwo w grupie.
Źródło: Zarządzaj Dockerem jako użytkownik inny niż root
źródło
Miałem ten sam problem i próbowałem różnych rzeczy, aby to naprawić, zmieniając plik .bash_profile, logując się i wylogowując, bez powodzenia. W końcu zrestartowanie mojego komputera naprawiło to.
źródło
Upewnij się, że jest
w Twoim
plik.
źródło
Ten sam problem napotkałem podczas tworzenia obrazów Docker od Jenkins. Po prostu dodaj użytkownika do
docker
grupy, a następnie ponownie uruchomić usługi Docker, aw moim przypadku musiałem zrestartować usługi Jenkins.To był błąd, który dostałem:
źródło
Innym możliwym powodem jest to, że wizualizacja procesora BIOS nie jest włączona. Najpierw włącz i włącz!
źródło