Installation einer Webanwendung in einem Docker-Container: Wählen Sie unix /var/run/docker.sock: keine solche Datei oder kein Verzeichnis

8

Ich versuche, eine Webanwendung in einem Docker-Container zu installieren.

Ich verwende OS X Yosemite Version 10.10.1

Ich habe das Tutorial zum Dockermachen einer Node.js Web App hier verfolgt: Ссылка

  1. Ich habe den boot2docker osx-installer heruntergeladen und eingerichtet unter: github.com/boot2docker/osx-installer/releases/tag/v1.4.1

  2. Ich habe diese Befehle in der Konsole in der folgenden Reihenfolge eingegeben:

    $ boot2docker init $ boot2docker start $ (boot2docker shellinit)

  3. Dann setze ich die Umgebungsvariable wie vom Terminal angewiesen mit den folgenden Befehlen:

    $ export DOCKER_TLS_VERIFY=1 $ export DOCKER_HOST=tcp://192.168.59.103:2376 $ export DOCKER_CERT_PATH=/Users/myusername/.boot2docker/certs/boot2docker-vm

An diesem Punkt schien alles in Ordnung zu sein.

  1. Nach dem Tutorial zum Dockerieren einer Node.js-App kam ich dann zu dem Punkt: Ссылка , wo Sie den Befehl eingeben:

    $ sudo docker build -t <your username>/centos-node-hello .

  2. Dann wird nach einem Passwort gefragt, und nach der Eingabe bekomme ich folgende Fehlermeldung:

    Sending build context to Docker daemon FATA[0000] Post http:///var/run/docker.sock/v1.16/build?rm=1&t=myusername%2Fcentos-node- hello: dial unix /var/run/docker.sock: no such file or directory

Hier sind meine env Variablen:

%Vor%

Meine Docker-Version:

%Vor%

Jede Hilfe würde wirklich geschätzt werden. Danke

    
gatordh7 19.12.2014, 01:24
quelle

1 Antwort

21

Kurze Antwort für Ihren speziellen Fall: Verwenden Sie nicht sudo .

Hier ist der Grund:

Wenn Sie boot2docker verwenden, wird der docker -Daemon in einer VM ausgeführt, im Wesentlichen auf einer anderen Maschine. Um mit einem docker -Daemon auf einem anderen Computer zu kommunizieren, müssen Sie die TLS-Verbindung verwenden (über HTTPS mit der REST-API des Dämons). Deshalb mussten Sie DOCKER_HOST und DOCKER_CERT_PATH einrichten. Da der Daemon auf einem anderen Computer ausgeführt wird, müssen Sie nicht root sein, um mit ihm zu kommunizieren, da ausgehende HTTP-Verbindungen kein root erfordern, im Gegensatz zu dem Versuch, mit dem unix:///var/run/docker.sock socket zu kommunizieren.

Aber wenn Sie sudo docker ausführen, sind Sie plötzlich ein anderer Benutzer, Sie sind root . Die Umgebungsvariablen, die Sie als Ihr reguläres Konto festgelegt haben, sind nicht festgelegt. Also verwendet die docker CLI ihre Standard-Kommunikationsmethode: den unix socket. Der Socket ist nicht da, weil der Daemon auf einem anderen Rechner läuft (der boot2docker vm). Daher die Fehlermeldung.

    
Andy 19.12.2014, 01:41
quelle

Tags und Links