Kan inte ansluta till Docker Daemon på 'unix: ///var/run/docker.sock'
Docker blir mer och mer populärt med sin förmåga att enkelt skapa, distribuera och köra applikationer med behållare. Behållare tillåter utvecklare att paketera ett program med alla dess bibliotek och beroenden innan de distribueras som ett komplett paket. Installerar Docker på Linux är relativt enkelt. Allt du behöver göra är att köra ett par kommandon i terminalen, och du är redo att gå.
Det kanske inte är detsamma för alla användare, även efter en lyckad installation. Ett av de vanligaste fel som uppstår är:Det går inte att ansluta till Docker-demonen på (unix: ///var/run/docker.sock. Är dockerdemonen igång?) Det här felet kan uppstå när du kör olika dockerkommandon som docker run, docker info, docker pull, docker stop etc.
Vad orsakar felet: Kan inte ansluta till Docker Daemon?
Efter att ha fått många utvecklares klagomål bestämde vi oss för att dyka in och komma med effektiva lösningar. Några av anledningarna som orsakar detta fel är:
- Docker-demonen är inte detlöpning.
- Docker gör det intestänga av rent.
- Brist pårotprivilegier för att starta dockertjänsten.
Nu när du har en grundläggande förståelse för orsaken till problemet, låt oss titta på de olika lösningarna som finns tillgängliga för dig.
Lösning 1: Starta Docker-tjänsten med systemctl
Om du precis har slutfört en Dockers nya installation på Ubuntu eller startat om din dator, finns det en stor sannolikhet attDocker-tjänst ärspringer inte. Docker daemon (dockerd) är systemtjänsten för docker. Den här tjänsten hanterar olika Docker-objekt som bilder, behållare, nätverk och volymer och lyssnar på Docker API-förfrågningar.
Systemctl-kommandot ersätter det gamla SysV init-systemet och dethanterar systemd-tjänster körs på Linux-system. Om du inte har systemctl i ditt system, oroa dig inte; Användservice kommandot enligt beskrivningen nedan.
Notera: Den här metoden fungerar bara för användare som installerade Docker med APT-pakethanteraren. Om du installerade Docker viaKNÄPPA, hänvisa tillLösning 5Nedan.
- Öppna terminalen och kör det första kommandot -avmaskera dockaren.
sudo systemctl avmaskningsdockare
Om vi försöker starta dockertjänsten när dockern är maskerad kan vi uppleva felet ”Det gick inte att starta docker.service: Enheten är maskerad.” Masken kan betraktas som en mer robust version av inaktiveringen. När en enhetsfil maskeras är enheten länkad till 'dev / null.' Du kan lista tillståndet för alla enhetsfiler med kommandot - '$ systemctl list-enhetsfiler‘
2. När dockningsenheten är avmaskerad, vi kan starta dockarendemon med systemctl-kommandot. De hamnarbetare demon hanterar dockerobjekt som bilder, behållare och Docker API-förfrågningar. Utför kommandot nedan på kommandoraden.
systemctl start docker
3. Till kontrollera om dockertjänsten är aktiv och igång. Vi kommer att användasystemctl-status kommando, som visar den aktuella statusen för den specifika tjänsten. Utför kommandot nedan på din terminal.
systemctl status docker
Från bilden ovan kan vi se detdockaren är aktiv och igång.
Lösning 2: Rengör tjänsten "Misslyckad Docker Pull" och starta Docker
Det finns fall där du oväntat kan stänga Docker när du drar i en container. Sådana situationer kommer att dölja docker.service ochdockningsstation. sockelfiler. Docker.socket är en fil som finns på '/var/run/docker.sock' och används för att kommunicera med Docker-demonen. Vi måstedemaskera två-enhetsfilerna - docker .service och docker.daemon tidigareförfarande tillstarta docker.
- StartaTerminal och körakommandon Nedan:
systemctl unmask docker.service systemctl unmask docker.socket systemctl start docker.service
Om du fortfarande upplever felet även efter att du har utfört kommandona nedan måste vi radera filerna i Behållare katalog innan du startar Docker igen. Containerd var en funktion som introducerades i Docker 1.11 och används för att hantera Docker-bildens livscykel.
2. Öppna Terminal och kör kommandona nedan. Se till att du känner till root lösenord eftersom vi behöver förhöjda privilegier för att utföra kommandona.
sudo su service docker stopp cd / var / run / docker / libcontainerd rm -rf containerd / * rm -f docker-containerd.pid service docker start
Lösning 3: Starta Dockerd (Docker Daemon) Service
Dockerd är Docker-demonen som lyssnar på Docker API: er och hanterar de olika Docker-objekten. Dockerd kan användas som ett alternativ till kommandot ”$ systemctl start docker”Som också används för att starta Docker-demonen.
- Öppna Terminal och starta dockerd genom att utföra kommandot nedan:
sudo dockerd
Lösning 4: Starta Docker med servicekommandot
Om du använder SysV init-system, då fungerar inte systemctl-kommandot för dig. Vi måste använda servicekommandot till start docker-demon.
- starta terminalen och Kör kommandona nedan:
sudo service --status-all sudo service docker start
Lösning 5: Starta Docker-tjänsten med Snap
Om du installerade Docker medSnap-pakethanterare, skulle du behöva använda snap-kommandot för att hantera dockerdemon.
Generellt hanterar Snap sina tjänster automatiskt. Men i situationer som detta fel kommer det att krävas manuellt ingripande. Några av argumenten du kan använda med snap-kommandot inkluderar stopp, start och omstart. I vårt fall använder vi startparametern.
- Öppna Terminal och kör kommandot nedan tillstarta Docker.
sudo snap start docker
2. Utför kommandot nedan till kontrollera huruvida Docker-tjänsten startades.
sudo snap-tjänster
Det kommer lista alla igång snap-tjänster.
Om ovanstående kommandon inte fungerar för dig, försök ansluta dockaren: hemkontakt eftersom den inte är automatiskt ansluten som standard. När du är klar, Start de Docker-tjänst.
3. Starta terminalen och kör kommandona nedan:
sudo snap connect docker: hem: hem sudo snap start docker
Lösning 6: Starta Docker för användare utan root Pprivilegier
Felet kan också uppstå pga brist på förhöjda privilegier och användaren har inte tillgång till ”unix: ///var/run/docker.sock.” Lyckligtvis finns det en lösning. Vi exporterar Docker Host-variabeln till localhost via port 2375.
- Öppna terminalen och kör kommandot nedan:
exportera DOCKER_HOST = tcp: // localhost: 2375
Lösning 7: Installera om Docker
Om lösningarna ovan inte löser felet är det stor sannolikhetschans att du kan ha installationsfel. För att installera Docker korrekt i ditt Linux-system, följ stegen från Docker officiella webbplats.