Ich bin neu in 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 habe das DOCKER_Host
env eingerichtet.
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:
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 docker pull busybox
, Es zieht 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?
Sie müssen keine Docker-Befehle als Sudo
ausführen, wenn Sie boot2docker
Verwenden, da jeder Befehl an boot2docker
VM übergeben wird Läuft standardmäßig als root.
Wenn Sie als Sudo
ausgeführt werden, wird der Fehler angezeigt, da für Sudo
nicht die Einstellung DOCKER_Host
Festgelegt ist, sondern nur für Ihren Benutzer.
Sie können dies bestätigen, indem Sie Folgendes ausführen:
$ env
Dann ein
$ Sudo env
Und in jeder Ausgabe nach DOCKER_Host
Suchen.
Wenn Sie eine Docker-Datei haben, in der Ihr Skript ausgeführt wird, funktioniert Folgendes 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 kannst du laufen:
docker build -t your-image-name:your-tag .
Dadurch wird Ihr Docker-Image erstellt, das Sie folgendermaßen anzeigen können:
docker images
Um Ihren Container auszuführen, können Sie Folgendes ausführen:
docker run your-image-name:your-tag
Dieser Befehl startet einen Container aus dem Image, das Sie mit Ihrem Dockerfile
und Ihrem Build-Befehl erstellt haben, und wird dann beendet, sobald Ihr script.sh
Die Ausführung beendet hat.
Sie können Ihre Umgebung schnell einrichten, indem Sie shellinit
verwenden.
Führen Sie auf Ihre Aufforderung hin Folgendes aus:
$(boot2docker shellinit)
Dadurch werden die Umgebungsvariablen aufgefüllt und exportiert und andere Funktionen initialisiert.
Auf meinem MAC starte ich boot2docker-vm am Terminal mit
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 gesetzt hatte, konnte ich den Build ohne Probleme ausführen.
pdate [2016-04-28] Wenn Sie die neuesten Docker-Versionen verwenden, können Sie dies tun
eval $(docker-machine env)
legt die Umgebung fest
(docker-machine env
Druckt die Exportanweisungen aus)
docker pull
wird fehlschlagen, wenn docker service
Läuft nicht. Stellen Sie sicher, dass es von ausgeführt wird
:~$ ps aux | grep docker
root 18745 1.7 0.9 284104 13976 ? Ssl 21:19 0:01 /usr/bin/docker -d
Wenn es nicht läuft, können Sie es mit starten
Sudo service docker start
Für Ubuntu 15 und höher verwenden
Sudo systemctl start docker
Ich habe auch diesen Fehler bekommen. Allerdings habe ich nicht boot2docker verwendet sondern nur "normaler" Docker unter Ubuntu installiert (siehe https://docs.docker.com/) installation/ubuntulinux / ).
Ich habe den Fehler ("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 nicht ausgeführt wurde , noch.
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
Für boot2docker unter Windows, nachdem Folgendes angezeigt wurde:
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
Endlich:
boot2docker ssh
Und Docker funktioniert wieder
Führen Sie unter Linux zunächst Sudo service docker start
im Terminal.
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.
So richten Sie Ihre Umgebung ein und behalten sie für zukünftige Sitzungen bei:
echo 'export DOCKER_Host="tcp://$(boot2docker ip 2>/dev/null):2375";' >> ~/.bashrc
Dann: source ~/.bashrc
Und Ihre Umgebung wird in jeder Sitzung eingerichtet
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
Sie, vielleicht nicht das OP, aber jemand hat vielleicht schon ein Verzeichnis mit dem Namen /var/run/docker.sock/
, Weil Sie oft gehackt und durchgestrichen haben, um die Dinge mit Docker in Ordnung zu bringen (insbesondere Noobs). Löschen Sie dieses Verzeichnis und versuchen Sie es erneut.
Dies half mir auf dem Weg, es auf Centos 7 zum Laufen zu bringen.