Ich versuche, etwas über Docker zu lernen , erhalte aber immer wieder kryptische (für mich) Fehlermeldungen.
Das einfachste Beispiel hierfür ist möglicherweise der Versuch, die von mir installierte Version von Docker zu drucken:
$ 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?
Ich habe gerade die Bedienungsanleitung durchgesehen und jeden Schritt genau befolgt. Daher bin ich überrascht, dass ich diese Meldung erhalte ... Was soll ich jetzt tun?
Ich habe gerade bemerkt, dass ich sudo
den Fehler nicht bekomme , wenn ich ihn nicht benutze :
$ 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
Natürlich ist dies keine Lösung, da ich sie möglicherweise sudo
irgendwo später verwenden muss ...
Ich habe gerade eine andere Seite gefunden, auf der steht : " Wenn Sie OS X verwenden , sollten Sie es nicht verwenden sudo
." Ich weiß nicht, ob sie nur für dieses Beispiel oder allgemein bedeuten.
boot2docker
), obwohl OS X in der Frage oder den Tags nicht explizit erwähnt wird. Wenn jemand an einer generischen Antwort interessiert ist, lesen Sie bitte meine Antwort.Antworten:
Für mich hat das Laufen
$(boot2docker shellinit 2> /dev/null)
das Problem behoben.Dadurch wird die Ausgabe des
boot2docker shellinit
Befehls (die dreiset -x ...
Zeilen) in Ihrer aktuellen Terminalsitzung ausgeführt, wodurch derdocker
Befehl weiß, wo sich die virtuelle Maschine boot2docker befindet.Durch Hinzufügen
$(boot2docker shellinit 2> /dev/null)
am Ende Ihrer~/.bash_profile
Datei wird sichergestellt, dass derdocker
Befehl jedes Mal konfiguriert wird, wenn Sie Ihr Terminal öffnen.Für Personen, die Fischschalen verwenden :
boot2docker shellinit ^ /dev/null | source
.Beachten Sie, dass
2> /dev/null
(und das Fischäquivalent^ /dev/null
) optional sind. Wie @ pablo-fernandez vorgeschlagen hat, verbirgt dies dieWriting ..
Linien.quelle
boot2docker start
bevor Sie die Shell-Init ausführen .Ich habe den gleichen Fehler unter MacOS mit und ohne sudo erhalten.
Ich habe es gelöst mit:
PS: Danke an Alan. Ich fand heraus, dass dieser Ansatz in der offiziellen Dokumentation empfohlen wird .
PS2: Manchmal
boot2docker init
kann es erforderlich sein, zwei Befehle auszuführen (danke Aaron).quelle
In meinem Fall (Linux Mint 17) habe ich verschiedene Dinge getan, und ich bin mir nicht sicher, welche davon absolut notwendig sind.
Ich habe fehlende Ubuntu-Pakete hinzugefügt:
Ein Benutzer wurde zur Gruppe hinzugefügt
docker
:Started Daemon (openSUSE benötigt dies nur)
Danke \ Namensnennung
Danke Usman Ismail , denn vielleicht war es nur das Letzte ...
Vielen Dank auch an github @ MichaelJCole für die Lösung, die für mich funktioniert hat, da ich beim Lesen von Usmans Kommentar nicht nach dem Daemon gesucht habe .
GitHub Kommentar :
Vielen Dank an fredjean.net für den Hinweis auf die fehlenden Pakete und vergessen Sie die Standard-Installationsanweisungen für Ubuntu und googeln Sie über andere Möglichkeiten
Dank des Kommentars von brettof86 zu openSUSE
quelle
sudo adduser $USER docker
. Trick, um es wirksam an dem aktuell Shell wurdecurgroup=$(id -gn) && newgrp docker && newgrp $curgroup
, angepasst von superuser.com/questions/272061/...Das Problem der Unterstreichung ist einfach: Keine Berechtigung zum
/var/run/docker.sock
Unix-Domain-Socket.Von Daemon Socket - Option Kapitel von Docker Befehlszeilenreferenz für Docker 1.6.0:
Die Schritte, die erforderlich sind, um Benutzern Rechte zu gewähren, sind in den Docker- Installationsanweisungen für Fedora ausführlich beschrieben :
Melden Sie sich ab und wieder an, damit die oben genannten Änderungen wirksam werden. Bitte beachten Sie, dass Docker-Pakete einiger Linux-Distributionen (Ubuntu) bereits
/var/run/docker.sock
in derdocker
Gruppe enthalten sind, sodass die ersten beiden oben genannten Schritte nicht erforderlich sind .Im Falle von OS X ist
boot2docker
die Situation anders; Der Docker-Dämon wird in einer VM ausgeführt, daher muss dieDOCKER_HOST
Umgebungsvariable auf diese VM festgelegt werden, damit der Docker-Client den Docker-Dämon finden kann. Dies erfolgt durch Ausführen$(boot2docker shellinit)
in der Shell.quelle
boot2docker shellinit
und anderen Befehlen besteht darin, dass dieser Befehl selbst keine Änderungen vornimmt, sondern nur Befehle generiert (druckt), die Sie selbst ausführen müssen. Sie könnenboot2docker shellinit
jeden Befehl zuerst ausführen und dann manuell kopieren und von seiner Ausgabe ausführen. Es ist einfacher, alle Befehle auszuführen, indem sieboot2docker shellinit
in einem Unterprozess (mit$()
Syntax) ausgeführt werden, da auf diese Weise jede Ausgabezeile automatisch als Shell-Befehl ausgeführt wird. Siehe docs.docker.com/installation/mac/#from-your-command-line, wo dies im Detail gezeigt wird.sudo service docker status
. Auf meinem Ubuntu 14.04 lief es nach der Installation nicht, was den Fehler verursachte.Stellen Sie sicher, dass der Docker-Dämon ausgeführt wird:
Das hat es für mich behoben!
quelle
sudo service docker start
für michsystemctl enable docker.service
undsystemctl start docker.service
Für system.d Linux-Benutzer (Arch in meinem Fall)sudo service docker restart
für mich$ docker version
Befehlsabfrage ist intern für die ausführbare Docker-Datei und nicht für den ausgeführten Daemon / Dienst.$ docker images or $ docker ps or $ docker pull centos
sind Befehle, die Abfragen an den Docker-Daemon / -Dienst senden, der ausgeführt wird.docker
oder den Siesudo
vor dem Befehl verwendet haben, z. B.$ sudo docker images
keine TLS-Konnektivität erforderlich ist.Besuchen Sie die Docker-Dokumentationsseite. Schützen Sie den Docker-Daemon-Socket .
Scrollen Sie ein wenig nach oben und finden Sie es
warning section
zur Klarheit.quelle
sudo usermod -a -G docker {username}
Sie müssen Folgendes tun:
Die folgenden Einstellungen haben das Problem behoben:
quelle
eval "$(boot2docker shellinit)"
Möglicherweise haben Sie noch keine Berechtigung für die Datei. Es ist mir passiert, nachdem ich mich der
docker
Gruppe hinzugefügt habeaber noch nicht abmelden.
Um dies zu beheben, können Sie sich entweder erneut anmelden oder
sg docker "docker <subcommand> ..."
vor dem Abmelden verwenden.Wenn Sie in der Gruppe sind
docker
in/etc/group
, sollten Sie in der Lage sein , es ohne Eingabe Passwort auszuführen.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 /
quelle
Unter Ubuntu müssen Sie nach der Installation von lxc-docker Ihren Benutzer zur Docker- Benutzergruppe hinzufügen :
Dies liegt an den Socket-Dateiberechtigungen:
Führen Sie usermod NICHT OHNE "-a" aus, wie in einem der anderen Kommentare vorgeschlagen. Andernfalls werden Ihre Einstellungen für zusätzliche Gruppen gelöscht und die Gruppe "Docker" verlassen
Folgendes wird passieren:
quelle
TLDR : Dadurch hat meine Python-Meetup-Gruppe dieses Problem überwunden, als ich eine Klinik zur Installation von Docker betrieb und die meisten Benutzer unter OS X waren:
Führen
export
Sie dann die Befehle aus, die Ihnen die Ausgabe gibtsollte dir sagen, dass es funktioniert.
Der Kontext (was uns zum Problem gebracht hat)
Ich leitete eine Klinik für die Installation von Docker und die meisten Teilnehmer hatten OS X, und wir stießen auf dieses Problem, und ich habe es auf mehreren Computern überwunden. Hier sind die Schritte, die wir befolgt haben:
Zuerst haben wir Homebrew installiert (ja, einige Teilnehmer hatten es nicht):
Dann haben wir ein Fass bekommen, mit dem wir Virtualbox installiert haben, und dann Brew, um Docker und Boot2docker zu installieren (alle für OS X erforderlich). Verwenden Sie Sudo nicht zum Brauen. ::
Die Lösung
Das war, als wir auf das Problem stießen, das der Fragesteller hier bekam. Das Folgende hat es behoben. Ich verstehe, es
init
war ein einmaliger Deal, aber Sie müssen wahrscheinlichup
jedes Mal laufen, wenn Sie Docker starten:Wenn
up
es dann ausgeführt wurde, gibt es mehrereexport
Befehle. Kopieren, einfügen und ausführen.Schließlich
docker info
sollte Ihnen sagen, dass es richtig installiert ist.Zur Demo
Der Rest der Befehle sollte es demonstrieren. (Unter Ubuntu Linux benötigte ich Sudo.)
Dann sollten Sie sich auf einer Root-Shell im Container befinden:
Zurück zu Ihrer nativen Benutzer-Bash:
Suchen Sie unter "Container ID" nach der etwa 12-stelligen hexadezimalen Kennung (0-9 oder af), z
456789abcdef
. Sie können dann Ihre Änderung zu übernehmen und ihm einen beschreibenden Namen nennen, wiedescriptivename
:quelle
Alles, was Sie brauchen, um Docker unter Linux Ubuntu / Mint auszuführen:
Optional müssen Sie möglicherweise zwei zusätzliche Abhängigkeiten installieren, wenn die oben genannten Funktionen nicht funktionieren:
quelle
sudo service docker start
löste das Problem auf meinem Ubuntu 14.04.Ich habe die Lösungen hier ausprobiert und boot2docker hat nicht funktioniert.
Meine Lösung: Deinstallieren Sie boot2docker auf dem Mac, installieren Sie eine Centos 7-VM in VirtualBox und arbeiten Sie mit Docker in dieser VM.
quelle
Bei mir haben folgende Schritte funktioniert:
docker run hello-world
mit diesem Fehler wie in der Frage fehlschlägt, aber das Ausführen hatsudo docker run hello-world
funktioniert.docker
Gruppe hinzugefügtsudo adduser user docker
. Dann müssen Sie Ihren Computer neu starten oder verwendensu - user
(überprüfen Sie mit demgroups
Befehl, ob Sie in derdocker
Gruppe sind).Danach
hello-world
begann zu arbeiten.Meine Antwort basiert auf Wie kann ich Docker ohne Sudo verwenden? das erklärt, was schief geht.
quelle
Für das, was es wert ist, habe ich alle Lösungen in dieser Frage und in dieser verwandten Frage ausprobiert und keine hat mein Problem gelöst, bis ich VirtualBox deinstalliert und neu installiert habe . Durch diesen Vorgang wurde die VirtualBox von Version 4.2.16 auf 4.3.22 aktualisiert (meine vorherige war einige Monate lang nicht verwendet auf dem System).
Dann
boot2docker
unddocker
ohne weitere Anpassungen gearbeitet.quelle
Ich hatte das gleiche Problem. Ein einfacher
service docker restart
löste das Problem.quelle
Der Docker-Daemon wird anstelle eines TCP-Ports an einen Unix-Socket gebunden. Standardmäßig gehört dieser Unix-Socket dem Benutzer root und andere Benutzer können nur mit sudo darauf zugreifen. Der Docker-Daemon wird immer als Root-Benutzer ausgeführt.
Melden Sie sich ab und wieder an, damit Ihre Gruppenmitgliedschaft neu bewertet wird.
Quelle: Verwalten Sie Docker als Nicht-Root-Benutzer
quelle
Ich hatte das gleiche Problem und versuchte verschiedene Dinge, um dies zu beheben. Ich änderte die Datei .bash_profile, loggte mich ein und aus, ohne Glück. Am Ende wurde es durch einen Neustart meines Computers behoben.
quelle
Stellen Sie sicher, dass es gibt
in deinem
Datei.
quelle
Ich hatte das gleiche Problem, als ich Docker-Images von Jenkins erstellte. Fügen Sie einfach den Benutzer zur
docker
Gruppe hinzu und starten Sie die Docker-Dienste neu. In meinem Fall musste ich die Jenkins-Dienste neu starten.Dies war der Fehler, den ich bekam:
quelle
Ein weiterer möglicher Grund ist, dass Ihre BIOS-CPU-Visualisierung nicht aktiviert ist. Gehen Sie und aktivieren Sie es zuerst!
quelle