Fix: Kan inte ansluta till Docker Daemon



Prova Vårt Instrument För Att Eliminera Problem

Du kan vara väldigt förvirrad om en Linux-terminal kastar ett felmeddelande 'kan inte ansluta till Docker-demon', eftersom mer än troligt att Docker-demon körs redan när du ser det. Även om du vill försäkra dig om att det är så kommer du troligen att vara förbryllad när du upptäcker att detta fel inte ens har att göra med att tjänsten inte startas. Det kastas oftast på användare som inte har lagt sig till Docker-gruppen.



Docker utfärdar en separat användargrupp på Linux-system, och de som har användarkonton som inte läggs till kan inte ansluta till den. Tänk på att lägga till ett användarkonto i Docker-gruppen är funktionellt rootekvivalent eftersom daemon alltid körs som rootanvändare. Detta kan förväntas på ett enanvändare Ubuntu Server-system, men det kommer säkert att vara något att tänka på för dem som kör Docker på Arch, Fedora eller Debian.



Metod 1: Kontrollera Docker-servicestatus

Medan det nästan säkert är så måste du kontrollera om Docker-tjänsten körs för närvarande. Kör vid ett terminalfönster systemctl status docker.service som en vanlig användare. Du bör få lite information om vilket PID-nummer Docker's daemon fick tilldelas. Om du inte gör det måste du starta om tjänsten.



Om du skulle ha startat om den igen, försök göra vad det var som kastade felmeddelandet 'kan inte ansluta till Docker-demon'. Om det nu fungerar, behöver du bara inte köra tjänsten och behöver inte oroa dig för något annat förutom anledningen till att den inte kördes. Tyvärr fungerar det inte i de flesta fall så du måste gå vidare i dessa situationer.

Metod 2: Lägga till användare i Docker-gruppen

Springa dockningsinfo från kommandoraden, vilket normalt ger dig 'kan inte ansluta till Docker-demon' igen.

Om så är fallet måste du köra sudo groupadd docker; sudo usermod -aG docker $ USER att lägga dig till rätt grupp. Skulle detta ge ett fel eftersom du inte har usermod, kan du ändra kommandot så att det körs som sudo groupadd docker; sudo gpasswd -a $ USER docker , men detta borde i allmänhet inte vara ett problem eftersom de flesta kommersiella Linux-distributioner arbetar med samma uppsättning verktyg. Hur som helst, kör newgrp docker så att du kan logga in i den nya dockningsgruppen om du inte redan är det.



Tänk på att detta alltid kommer att lägga till den användare du är inloggad för, vilket inte borde vara för mycket av ett problem på de flesta människors system som inte har flera konton utöver den ena användaren och rotkontot. Eftersom du har administrerad åtkomst för närvarande inmatad, kör sudo chgrp docker / usr / bin docker; sudo chgrp docker /var/run/docker.sock för att fixa behörigheterna i dockeruttaget och kommandot. Vanligtvis tillhör sockelfilen endast rotanvändaren så detta kommer att korrigera det.

Efter att ha kört det borde du inte ha några problem eftersom det nu tillhör samma grupp som du skapade i föregående kommando. Du vill testa för att säkerställa att dockaren körs utan sudo, skriv så docker kör hej-världen som en vanlig användare för att se till att du inte får några andra fel.

Vid denna tidpunkt kommer mycket få användare fortfarande att få något slags felmeddelande. De flesta saker bör korrigeras just nu, men om du fortfarande har problem kanske du vill logga ut helt. Försök att öppna ett annat terminalemulatorfönster, men om det inte fungerar kan det ibland hjälpa till att få ner systemet för en fullständig omstart om det är möjligt

Metod 3: Använd ACL för att modifiera Docker-metadata

Om du inte vill tillhöra en grupp som gör att du gillar en rotanvändare kan du ställa in sockelfilen så att den bara fungerar med vissa behörigheter. Du kan ignorera gpasswd-processen om du föredrar att göra det på detta sätt. Att behöva skanna filsystemet för olika ACL-poster i en börda för dem som gör en säkerhetsgranskning, men det hindrar dig från att behöva använda dockergruppen helt.

Om du vill göra det på det här sättet kan du springa sudo setfacl -m användare: namn: rw /var/run/docker.sock medan du ersätter användare och namn med lämpliga etiketter. Detta ger behörighet att komma åt Docker-sockeln på /var/run/docker.sock, som ska fungera med Debian och Ubuntu Server.

3 minuter läst