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: Ссылка
Ich habe den boot2docker osx-installer heruntergeladen und eingerichtet unter: github.com/boot2docker/osx-installer/releases/tag/v1.4.1
Ich habe diese Befehle in der Konsole in der folgenden Reihenfolge eingegeben:
$ boot2docker init
$ boot2docker start
$ (boot2docker shellinit)
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.
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 .
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
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.
Tags und Links node.js docker boot2docker