Kan geen verbinding maken met de Docker Daemon op ‘unix: ///var/run/docker.sock’
Docker wordt steeds populairder vanwege de mogelijkheid om eenvoudig applicaties met containers te maken, te implementeren en uit te voeren. Met containers kunnen ontwikkelaars een applicatie met al zijn bibliotheken en afhankelijkheden verpakken voordat deze als één volledig pakket worden geïmplementeerd. Installeren Docker op Linux is relatief eenvoudig. Het enige dat u hoeft te doen, is een paar opdrachten in de Terminal uitvoeren en u bent klaar om te gaan.
Dit is echter mogelijk niet voor alle gebruikers hetzelfde, zelfs niet na een succesvolle installatie. Een van de meest voorkomende fouten is:Kan geen verbinding maken met de Docker-daemon op (unix: ///var/run/docker.sock. Is de docker-daemon actief?) Deze fout kan optreden bij het uitvoeren van verschillende docker-opdrachten zoals docker run, docker info, docker pull, docker stop, etc.
Wat veroorzaakt de fout: kan geen verbinding maken met de Docker Daemon?
Nadat we talloze klachten van ontwikkelaars hadden ontvangen, besloten we erin te duiken en met effectieve oplossingen te komen. Enkele van de redenen die deze fout veroorzaken, zijn onder meer:
- De Docker-daemon is dat nietrennen.
- Docker nietafsluiten netjes.
- Gebrek aanroot-rechten om de docker-service te starten.
Nu u een basiskennis heeft van de oorzaak van het probleem, gaan we eens kijken naar de verschillende oplossingen die voor u beschikbaar zijn.
Oplossing 1: start de Docker-service met systemctl
Als u zojuist de nieuwe installatie van een Docker op Ubuntu hebt voltooid of uw pc opnieuw hebt opgestart, is de kans groot dat deDocker-service isniet rennen. Docker-daemon (dockerd) is de systeemservice voor docker. Deze service verwerkt verschillende Docker-objecten zoals afbeeldingen, containers, netwerken en volumes en luistert naar de Docker API-verzoeken.
De Systemctl-opdracht vervangt het oude SysV-init-systeem, en hetbeheert systemd-services draait op Linux-systemen. Als u geen systemctl in uw systeem heeft, hoeft u zich geen zorgen te maken; gebruik deonderhoud commando zoals hieronder beschreven.
Opmerking: Deze methode werkt alleen voor gebruikers die Docker hebben geïnstalleerd met de APT-pakketbeheerder. Als je Docker hebt geïnstalleerd viaSNAP, verwijzen naarOplossing 5hieronder.
- Open de terminal en voer het eerste commando uit -ontmasker havenarbeider.
sudo systemctl ontmasker docker
Als we de docker-service proberen te starten wanneer de docker is gemaskeerd, kunnen we de fout ‘Failed to start docker.service: Unit is masked. 'Te zien krijgen. Masker kan worden beschouwd als een robuustere versie van uitschakelen. Wanneer een eenheidsbestand wordt gemaskeerd, wordt de eenheid gekoppeld aan ‘dev / null’. U kunt de status van alle eenheidsbestanden weergeven met het commando - ‘$ systemctl lijst-eenheid-bestanden‘
2. Zodra de docker-eenheid is ontmaskerd, wij kunnen start de havenarbeiderdemon met het systemctl commando. De havenarbeider demon beheert docker-objecten zoals afbeeldingen, containers en Docker API-verzoeken. Voer de onderstaande opdracht uit op de opdrachtregel.
systemctl start docker
3. Aan verifiëren of de havenarbeidersdienst is actief en loopt. We zullen desystemctl status commando, dat de huidige status van de specifieke service laat zien. Voer de onderstaande opdracht uit op uw terminal.
systemctl status docker
Aan de bovenstaande afbeelding kunnen we dat ziende havenarbeider is actief en actief.
Oplossing 2: maak een ‘Failed Docker Pull’ schoon en start de Docker-service
Er zijn gevallen waarin u Docker onverwachts kunt sluiten tijdens het trekken van een container. Dergelijke situaties maskeren het docker.service endocker .socketbestanden. Docker.socket is een bestand op ‘/var/run/docker.sock’ en wordt gebruikt om te communiceren met de Docker-daemon. We zullen moetenontmaskeren de bestanden met twee eenheden - eerder docker .service en docker.daemondoorgaan naarstart dokwerker.
- Start hetTerminal en voer hetcommando's hieronder:
systemctl ontmaskeren docker.service systemctl ontmaskeren docker.socket systemctl start docker.service
Als u de fout nog steeds ondervindt, zelfs nadat u de onderstaande opdrachten hebt uitgevoerd, is dat nodig verwijderen de bestanden in het Containerd directory voordat u Docker opnieuw start. Containerd was een functie die is geïntroduceerd in Docker 1.11 en wordt gebruikt om de levenscyclus van Docker-images te beheren.
2. Open Terminal en voer de onderstaande opdrachten uit. Zorg ervoor dat u het root wachtwoord omdat we verhoogde rechten nodig hebben om de opdrachten uit te voeren.
sudo su service docker stop cd / var / run / docker / libcontainerd rm -rf containerd / * rm -f docker-containerd.pid service docker start
Oplossing 3: start de Dockerd-service (Docker Daemon)
Dockerd is de Docker-daemon die naar Docker-API's luistert en de verschillende Docker-objecten beheert. Dockerd kan worden gebruikt als alternatief voor het commando ‘$ systemctl start docker‘Die ook wordt gebruikt om de Docker-daemon te starten.
- Open Terminal en start dockerd door het onderstaande commando uit te voeren:
sudo dockerd
Oplossing 4: start Docker met de opdracht Service
Als u de SysV init-systeem, dan zal de opdracht systemctl niet voor u werken. We zullen de service commando naar start docker daemon.
- start de Terminal en uitvoeren de onderstaande commando's:
sudo service --status-all sudo service docker start
Oplossing 5: start de Docker-service met Snap
Als je Docker hebt geïnstalleerd met deSnap pakketbeheerder, zou u het snap-commando moeten gebruiken om de docker-daemon te beheren.
Over het algemeen beheert Snap hun services automatisch. In situaties zoals deze fout is echter handmatige tussenkomst vereist. Enkele van de argumenten die u kunt gebruiken met de snap-opdracht zijn onder meer stop, start en herstart. In ons geval gebruiken we de startparameter.
- Open Terminal en voer de onderstaande opdracht uit omstart Docker.
sudo snap start docker
2. Voer de onderstaande opdracht uit om verifiëren of het Docker-service is gestart.
sudo snap-services
Dat zal lijst allemaal rennen snap-services.
Probeer het als de bovenstaande opdrachten niet werken de havenarbeider aansluiten: thuisstekker omdat het standaard niet automatisch wordt verbonden. Eenmaal gedaan, begin de Docker-service.
3. Start de Terminal en voer de onderstaande opdrachten uit:
sudo snap connect docker: home: home sudo snap start docker
Oplossing 6: start Docker voor gebruikers zonder Root Prechten
De fout kan ook optreden als gevolg van gebrek aan verhoogde privileges en de gebruiker heeft geen toegang tot ‘unix: ///var/run/docker.sock.’ Gelukkig is er een oplossing. We exporteren de Docker Host-variabele naar de localhost via poort 2375.
- Open de terminal en voer de onderstaande opdracht uit:
exporteer DOCKER_HOST = tcp: // localhost: 2375
Oplossing 7: installeer Docker opnieuw
Als de bovenstaande oplossingen de fout niet oplossen, is de kans groot dat u installatiefouten krijgt. Volg de stappen van de officiële Docker-website om Docker correct op uw Linux-systeem te installeren.