Fix: Kan ikke koble til Docker Daemon



Prøv Instrumentet Vårt For Å Eliminere Problemer

Du kan være veldig forvirret hvis en Linux-terminal kaster feilen 'kan ikke koble til Docker-demonen', fordi Docker-demonen mer enn sannsynlig allerede kjører når du ser det. Mens du vil forsikre deg om at det er det, vil du sannsynligvis være forvirret når du finner ut at denne feilen ikke en gang har å gjøre med at tjenesten ikke startes. Det blir for det meste kastet mot brukere som ikke har lagt seg til Docker-gruppen.



Docker utsteder en egen brukergruppe på Linux-systemer, og de som har brukerkontoer som ikke er lagt til, kan ikke koble til den. Husk at å legge til en brukerkonto i Docker-gruppen er funksjonelt root-ekvivalent, siden daemon alltid kjører som root-bruker. Dette kan forventes på et enkeltbruker Ubuntu Server-system, men det vil absolutt være noe å huske på for de som kjører Docker på Arch, Fedora eller Debian.



Metode 1: Kontrollere Docker-tjenestestatus

Selv om det nesten helt sikkert er det, må du sjekke om Docker-tjenesten kjører for øyeblikket. Løp ved et terminalvindu systemctl status docker.service som en vanlig bruker. Du bør få litt informasjon om hvilket PID-nummer Docker's daemon ble tildelt. Hvis du ikke gjør det, må du starte tjenesten på nytt.



Hvis du har startet den på nytt, kan du prøve å gjøre hva det var som kastet deg feilen 'kan ikke koble til Docker-demonen'. Hvis det nå fungerer, så hadde du ikke tjenesten i gang, og trenger ikke å bekymre deg for noe annet enn årsaken til at den ikke kjørte. Dessverre fungerer dette ikke i de fleste tilfeller, så du må gå videre i slike situasjoner.

Metode 2: Legge til brukere i Docker Group

Løpe docker info fra kommandolinjen, som normalt vil gi deg feilen “kan ikke koble til Docker-demon” igjen.

Hvis dette er tilfelle, må du løpe sudo groupadd docker; sudo usermod -aG docker $ BRUKER å legge deg til riktig gruppe. Skulle dette gi en feil fordi du ikke har brukermodus, kan du endre kommandoen for å kjøre som sudo groupadd docker; sudo gpasswd -a $ USER docker , men dette bør generelt ikke være et problem fordi de fleste Linux-distribusjoner av kommersiell klasse jobber med samme sett med verktøy. I alle fall, løp newgrp docker slik at du kan bli logget på den nye docker-gruppen hvis du ikke allerede er det.



Husk at dette alltid vil legge til brukeren du er logget på som, noe som ikke burde være for mye av et problem på de fleste menneskers systemer som ikke har flere kontoer utover den ene brukeren og rotkontoen. Siden du har administrert tilgang tastet inn foreløpig, kjør sudo chgrp docker / usr / bin docker; sudo chgrp docker /var/run/docker.sock for å fikse tillatelsene på docker-kontakten og -kommandoen. Vanligvis tilhører socketfilen bare rotbrukeren, så dette vil korrigere det.

Etter å ha kjørt den, bør du ikke ha noen problemer fordi den nå tilhører samme gruppe som du hadde opprettet i forrige kommando. Du vil teste for å sikre at docker kjører uten sudo, men skriv det docker kjøre hei-verden som en vanlig bruker for å sikre at du ikke får noen andre feil.

På dette tidspunktet vil svært få brukere fremdeles motta noen form for feilmelding. De fleste ting bør rettes på dette punktet, men hvis du fortsatt har problemer, vil du kanskje logge av helt. Prøv å åpne et annet terminalemulatorvindu, men hvis dette ikke fungerer, hjelper det noen ganger å få systemet ned for en fullstendig omstart hvis det i det hele tatt er mulig

Metode 3: Bruk ACLer til å modifisere Docker-metadata

Hvis du ikke vil tilhøre en gruppe som gjør at du liker en rotbruker, kan du sette sokkelfilen til å fungere med bare visse tillatelser. Du kan ignorere gpasswd-prosessen hvis du foretrekker å gjøre det på denne måten. Å måtte skanne filsystemet for forskjellige ACL-oppføringer i en byrde for de som gjør en sikkerhetsrevisjon, men det forhindrer deg i å måtte bruke docker-gruppen helt.

Skulle du ønske å gjøre det på denne måten, så kan du løpe sudo setfacl -m bruker: navn: rw /var/run/docker.sock mens du erstatter bruker og navn med passende etiketter. Dette gir tillatelse til å få tilgang til Docker-kontakten på /var/run/docker.sock, som skal fungere med Debian og Ubuntu Server.

3 minutter lest