[FIX] Keine Verbindung zum Docker-Daemon unter ‘unix:///var/run/docker.sock’
Docker wird immer beliebter mit seiner Fähigkeit, Anwendungen mithilfe von Containern einfach zu erstellen, bereitzustellen und auszuführen. Container ermöglichen es Entwicklern, eine Anwendung mit all ihren Bibliotheken und Abhängigkeiten zu verpacken, bevor sie als ein vollständiges Paket bereitgestellt werden. Installation Docker unter Linux ist relativ einfach. Alles, was Sie tun müssen, ist, ein paar Befehle im Terminal auszuführen, und Sie können loslegen.
Dies kann jedoch auch nach einer erfolgreichen Installation nicht für alle Benutzer gleich sein. Einer der am häufigsten auftretenden Fehler ist: Keine Verbindung zum Docker-Daemon unter (unix:///var/run/docker.sock. Läuft der Docker-Daemon?) Dieser Fehler kann auftreten, wenn verschiedene Docker-Befehle wie Docker Run, Docker Info, Docker Pull, Docker Stop usw. ausgeführt werden.
Was verursacht den Fehler: Kann keine Verbindung zum Docker-Daemon herstellen?
Nachdem wir zahlreiche Beschwerden von Entwicklern erhalten hatten, haben wir uns entschieden, einzutauchen und effektive Lösungen zu finden. Einige der Gründe, die diesen Fehler auslösen, sind:
- Der Docker-Daemon ist es nicht Laufen.
- Docker nicht schließen sauber.
- Mangel an Root-Rechte um den Docker-Dienst zu starten.
Nachdem Sie nun ein grundlegendes Verständnis der Problemursache gewonnen haben, schauen wir uns die verschiedenen Lösungen an, die für Sie verfügbar sind.
Lösung 1: Starten Sie den Docker-Dienst mit systemctl
Wenn Sie gerade eine Docker-Neuinstallation unter Ubuntu abgeschlossen oder Ihren PC neu gestartet haben, besteht eine hohe Wahrscheinlichkeit, dass die Docker-Dienst ist nicht laufen. Docker-Daemon (dockerd) ist der Systemdienst für Docker. Dieser Dienst verarbeitet verschiedene Docker-Objekte wie Images, Container, Netzwerke und Volumes und hört auf die Docker-API-Anfragen.
Der Befehl Systemctl ersetzt das alte SysV-Init-System und es verwaltet Systemdienste läuft auf Linux-Systemen. Wenn Sie nicht haben systemctl Machen Sie sich in Ihrem System keine Sorgen; benutze die Bedienung Befehl wie unten beschrieben.
Hinweis: Diese Methode funktioniert nur für Benutzer, die Docker mit dem APT-Paketmanager installiert haben. Wenn Sie Docker über . installiert haben SNAP, beziehen auf Lösung 5 unten.
- Öffne das Terminal und führe den ersten Befehl aus – Docker demaskieren.
sudo systemctl unmask docker
Wenn wir versuchen, den Docker-Dienst zu starten, während Docker maskiert ist, kann der Fehler auftreten ‘Docker.service konnte nicht gestartet werden: Einheit ist maskiert.’ Maske kann als eine robustere Version der Deaktivierung angesehen werden. Wenn eine Unit-Datei maskiert ist, wird die Unit verknüpft mit ‘dev/null.’ Sie können den Status aller Unit-Dateien mit dem Befehl – ’$ systemctl list-unit-files‘
2. Sobald die Docker-Einheit entlarvt, wir können starte den docker Dämon mit dem systemctl-Befehl. Das Docker Dämon verwaltet Docker-Objekte wie Images, Container und Docker-API-Anfragen. Führen Sie den folgenden Befehl in der Befehlszeile aus.
systemctl start docker
3. Zu überprüfen ob der Docker-Service ist aktiv und läuft. Wir werden die verwenden Systemctl-Status Befehl, der den aktuellen Status des jeweiligen Dienstes anzeigt. Führen Sie den folgenden Befehl auf Ihrem Terminal aus.
systemctl status docker
Auf dem obigen Bild können wir das sehen der Docker ist aktiv und läuft.
Lösung 2: Bereinigen Sie einen fehlgeschlagenen Docker-Pull und starten Sie den Docker-Dienst
Es gibt Fälle, in denen Sie Docker beim Ziehen eines Containers unerwartet schließen. Solche Situationen werden die docker.service und docker .socket Dateien. Docker.socket ist eine Datei unter ‘/var/run/docker.sock’ und wird verwendet, um mit dem Docker-Daemon zu kommunizieren. Wir müssen entlarven die zweiteiligen Dateien – docker .service und docker.daemon vorher verfahren zu Docker starten.
- Starte den Terminal und führe das aus Befehle unten:
systemctl unmask docker.service systemctl unmask docker.socket systemctl start docker.service
Wenn der Fehler auch nach der Ausführung der folgenden Befehle weiterhin auftritt, müssen wir löschen die Dateien im in Containerd Verzeichnis, bevor Sie Docker erneut starten. Containerd war eine in Docker 1.11 eingeführte Funktion und wird verwendet, um den Lebenszyklus von Docker-Images zu verwalten.
2. Öffnen Sie Terminal und führen Sie die folgenden Befehle aus. Stellen Sie sicher, dass Sie wissen, Root-Passwort da wir erhöhte Privilegien benötigen, um die Befehle auszuführen.
sudo su service docker stop cd /var/run/docker/libcontainerd rm -rf containerd/* rm -f docker-containerd.pid service docker start
Lösung 3: Starten Sie den Dockerd (Docker Daemon)-Dienst
Dockerd ist der Docker-Daemon, der auf Docker-APIs lauscht und die verschiedenen Docker-Objekte verwaltet. Dockerd kann alternativ zum Befehl ‘$ systemctl start docker‘, mit dem auch der Docker-Daemon gestartet wird.
- Öffnen Terminal und Dockerd starten indem Sie den folgenden Befehl ausführen:
sudo dockerd
Lösung 4: Starten Sie Docker mit dem Service-Befehl
Wenn Sie das verwenden SysV-Initialisierungssystem, dann funktioniert der Befehl systemctl nicht für Sie. Wir müssen die Dienstbefehl zu Docker-Daemon starten.
- Starten Sie das Terminal und ausführen die Befehle unten:
sudo service --status-all sudo service docker start
Lösung 5: Starten Sie den Docker-Dienst mit Snap
Wenn Sie Docker mit dem installiert haben Snap-Paketmanager, müssen Sie den Befehl snap verwenden, um den Docker-Daemon zu verwalten.
Im Allgemeinen verwaltet Snap ihre Dienste automatisch. In Situationen wie diesem Fehler ist jedoch ein manueller Eingriff erforderlich. Zu den Argumenten, die Sie mit dem snap-Befehl verwenden können, gehören stop, start und restart. In unserem Fall verwenden wir den Startparameter.
- Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus, um Docker starten.
sudo snap start docker
2. Führen Sie den folgenden Befehl aus, um überprüfen ob die Docker-Dienst wurde gestartet.
sudo snap services
Das wird aufführen alle laufen Snap-Dienste.
Wenn die obigen Befehle für Sie nicht funktionieren, versuchen Sie es Anschließen des Dockers: Home-Stecker da es standardmäßig nicht automatisch verbunden ist. Einmal getan, Start das Docker-Dienst.
3. Starten Sie das Terminal und führen Sie die folgenden Befehle aus:
sudo snap connect docker:home :home sudo snap start docker
Lösung 6: Docker für Benutzer ohne Root P startenVorteile
Der Fehler kann auch auftreten aufgrund von Mangel an erhöhten Privilegien und der Benutzer hat keinen Zugriff auf ‘unix:///var/run/docker.sock’. Zum Glück gibt es einen Workaround. Wir exportieren die Docker-Host-Variable über Port 2375 zum localhost.
- Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:
export DOCKER_HOST=tcp://localhost:2375
Lösung 7: Docker neu installieren
Wenn die oben genannten Lösungen den Fehler nicht beheben, besteht eine hohe Wahrscheinlichkeit, dass Sie Installationsfehler haben. Um Docker korrekt in Ihrem Linux-System zu installieren, befolgen Sie die Schritte von Offizielle Docker-Website.