Docker-Fehler: /var/run/docker.sock: Keine solche Datei oder kein solches Verzeichnis


86

Ich bin neu bei Docker. Ich habe ein Shell-Skript, das Daten in Impala lädt, und ich möchte, dass eine Docker-Datei, die ausgeführt wird, ein Image erstellt und den Container ausführt. Ich bin auf einem Mac, habe boot2docker installiert und die Umgebung DOCKER_HOSTeingerichtet.

bash-3.2$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Dirs: 0
Execution Driver: native-0.2
Kernel Version: 3.15.3-tinycore64
Debug mode (server): true
Debug mode (client): false
Fds: 10
Goroutines: 10
EventsListeners: 0
Init Path: /usr/local/bin/docker
Sockets: [unix:///var/run/docker.sock tcp://0.0.0.0:2375]

Ich versuche gerade, ein vorgefertigtes Image zu installieren, indem ich:

sudo docker pull busybox

Ich erhalte diesen Fehler:

sudo docker pull busybox 2014/08/18 17:56:19 Post http:///var/run/docker.sock/images/create?fromImage=busybox&tag=: dial unix /var/run/docker.sock: no such file or directory

Stimmt etwas mit meinem Docker-Setup nicht?

Wenn ich ein mache docker pull busybox, zieht es das Bild und der Download ist abgeschlossen.

bash-3.2$ docker pull busybox
Pulling repository busybox
a9eb17255234: Download complete 
fd5373b3d938: Download complete 
d200959a3e91: Download complete 
37fca75d01ff: Download complete 
511136ea3c5a: Download complete 
42eed7f1bf2a: Download complete 
c120b7cab0b0: Download complete 
f06b02872d52: Download complete 
120e218dd395: Download complete 
1f5049b3536e: Download complete 
bash-3.2$ docker run busybox /bin/echo Hello Doctor
Hello Doctor

Vermisse ich etwas


Ich hatte das gleiche Problem. Ich habe meinen Laptop neu gestartet. Also fing es an, für mich zu arbeiten. (siehe docs.docker.com/installation/ubuntulinux ) Sie haben auch erwähnt, dass der Computer neu gestartet werden soll .
NehaG

arbeitete für mich, als ich mich mit dem Internet verband, ich habe keine Ahnung, warum es passiert ist :(
Sai Ram

Antworten:


87

Sie müssen keine Docker-Befehle ausführen, wie sudobei Verwendung, boot2dockerda jeder an die boot2dockerVM übergebene Befehl standardmäßig als root ausgeführt wird.

Beim Ausführen wird der Fehler angezeigt, sudoda sudodie DOCKER_HOSTUmgebung nicht festgelegt ist, sondern nur Ihr Benutzer.

Sie können dies bestätigen, indem Sie Folgendes ausführen:

$ env

Dann ein

$ sudo env

Und DOCKER_HOSTin jedem Ausgang suchen .

Wenn Sie eine Docker-Datei haben, in der Ihr Skript ausgeführt wird, funktioniert dies möglicherweise für Sie:

Dockerfile

FROM busybox

# Copy your script into the docker image
ADD /path/to/your/script.sh /usr/local/bin/script.sh

# Run your script
CMD /usr/local/bin/script.sh

Dann können Sie ausführen:

docker build -t your-image-name:your-tag .

Dadurch wird Ihr Docker-Image erstellt, das Sie sehen können, indem Sie Folgendes ausführen:

docker images

Um Ihren Container auszuführen, können Sie Folgendes ausführen:

docker run your-image-name:your-tag

Dieser Ausführungsbefehl startet einen Container aus dem Image, das Sie mit Ihrem Dockerfileund Ihrem Build-Befehl erstellt haben, und wird beendet, sobald Ihre script.shAusführung abgeschlossen ist.


1
Tut mir leid wegen meiner Unwissenheit, aber ich glaube nicht, dass es mir gelungen ist zu bauen. "Docker-Bilder": gibt 19.08.2014 11:11:45 Get http: ///var/run/docker.sock/v1.13/images/json: Wählen Sie Unix /var/run/docker.sock: Nein solche Datei oder Verzeichnis. Sollte der Docker im Home-Verzeichnis abgelegt werden und kann er mit einem beliebigen Namen benannt werden? Ist es dasselbe wie "Bildname"?
user1189851

Können Sie den Befehl einfügen, mit dem Sie das Docker-Image erstellen? Es hört sich so an, als würden Sie sudo immer noch auf Ihrem OSX-Computer verwenden, wenn Sie es nicht sollten.
Chris McKinnel

$ docker build -t / Benutzer / ig / Dokumente / Tests / hellodocker. 19.08.2014 11:18:09 Ungültiger Namespace-Name (), nur [a-z0-9_] zulässig, Größe zwischen 4 und 30; und hellodocker hat nur den Inhalt der Docker-Datei, die Sie gegeben haben. Vielen Dank.
user1189851

Ja Sie versuchen , Ihr Docker Bild mit einem Dateipfad markieren - etwas anderes versucht nach -twie your-image-name:a-tag.
Chris McKinnel

Könnten Sie mir die Kommandozeile geben, bitte. Ich vermassle etwas. Meine Docker-Datei ist hellodocker und der Pfad ist oben angegeben.
user1189851

45

Sie können Ihre Umgebung schnell einrichten mit shellinit

Führen Sie an Ihrer Eingabeaufforderung Folgendes aus:

$(boot2docker shellinit)  

Dadurch werden die Umgebungsvariablen gefüllt und exportiert und andere Funktionen initialisiert.


26

Auf meinem MAC, wenn ich boot2docker-vm auf dem Terminal mit starte


boot2docker start

Ich sehe folgendes


To connect the Docker client to the Docker daemon, please set:
    export DOCKER_CERT_PATH=
    export DOCKER_TLS_VERIFY=1
    export DOCKER_HOST=tcp://:2376

Nachdem ich diese Umgebungsvariablen festgelegt hatte, konnte ich den Build ohne Probleme ausführen.

Update [2016-04-28] Wenn Sie eine der neuesten Docker-Versionen verwenden, können Sie dies tun

eval $(docker-machine env) wird die Umgebung einstellen

( docker-machine envdruckt die Exportanweisungen aus)


2
Sie können diese auch zu Ihrem Terminalprofil hinzufügen, um Zeit zu sparen. Die VM wird Sie darüber informieren, dass sie bereits eingestellt sind.
Joe Susnick

25

docker pullschlägt fehl, wenn docker servicees nicht läuft. Stellen Sie sicher, dass es vorbei läuft

:~$ ps aux | grep docker
root     18745  1.7  0.9 284104 13976 ?   Ssl  21:19   0:01 /usr/bin/docker -d

Wenn es nicht ausgeführt wird, können Sie es starten

sudo service docker start

Für Ubuntu 15 und höher verwenden

sudo systemctl start docker


16

Ich habe auch diesen Fehler bekommen. Ich habe jedoch nicht boot2docker verwendet, sondern nur "einfaches" Docker unter Ubuntu installiert (siehe https://docs.docker.com/installation/ubuntulinux/ ).

Ich habe den Fehler erhalten ("Unix wählen /var/run/docker.sock: Keine solche Datei oder kein solches Verzeichnis. Versuchen Sie, eine Verbindung zu einem TLS-fähigen Daemon ohne TLS herzustellen?"), Weil der Docker- Daemon noch nicht ausgeführt wurde.

Unter Ubuntu müssen Sie den Dienst starten :

sudo service docker start

Siehe auch http://blog.arungupta.me/resolve-dial-unix-docker-sock-error-techtip64


9

Für boot2docker unter Windows, nachdem Sie Folgendes gesehen haben:

FATA[0000] Get http:///var/run/docker.sock/v1.18/version: 
dial unix /var/run/docker.sock: no such file or directory.  
Are you trying to connect to a TLS-enabled daemon without TLS?

Alles was ich getan habe war:

boot2docker start
boot2docker shellinit

Das erzeugte:

export DOCKER_CERT_PATH=C:\Users\vonc\.boot2docker\certs\boot2docker-vm
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://192.168.59.103:2376

Schließlich:

boot2docker ssh

Und Docker funktioniert wieder



5

Wenn Sie CentOS 7 verwenden und Docker über yum installiert haben, vergessen Sie nicht, Folgendes auszuführen:

$ sudo systemctl start docker
$ sudo systemctl enable docker

Dadurch wird der Server gestartet und beim Booten automatisch neu gestartet.


4

So richten Sie Ihre Umgebung ein und behalten sie für zukünftige Sitzungen:

echo 'export DOCKER_HOST="tcp://$(boot2docker ip 2>/dev/null):2375";' >> ~/.bashrc

Dann: source ~/.bashrc

Und Ihre Umgebung wird in jeder Sitzung eingerichtet


0

Die erste Datei /var/run/docker.sock verweist auf denselben Pfad in Ihrer virtuellen boot2docker-Maschine. Schreiben Sie korrekt für Windows /var/run/docker.sock


Können Sie hier weitere Erklärungen hinzufügen? Außerdem denke ich, dass der Benutzer auf einem Mac ist.
2ps

0

Sie, vielleicht nicht der OP, aber jemand hat möglicherweise bereits ein Verzeichnis aufgerufen, /var/run/docker.sock/weil Sie so oft gehackt und aufgeschlitzt haben, um die Dinge mit Docker richtig zu machen (insbesondere Noobs). Löschen Sie dieses Verzeichnis und versuchen Sie es erneut.

Dies hat mir auf meinem Weg geholfen, es auf Centos 7 zum Laufen zu bringen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.