Docker 'Permission Denied'-feil

Docker Permission Denied Feil



Når du arbeider med Docker, kan du støte på en instans der kommandoen returnerer en 'tillatelse nektet'-feil. Denne feilen oppstår når du prøver å kjøre Docker uten tilstrekkelige tillatelser for kommandoen.

Docker krever sudo- eller root-tillatelser for å utføre de tilknyttede kommandoene som standard. Forsøk på å kjøre en kommando uten de nødvendige privilegiene fører til den beryktede 'tillatelse nektet'-feil.







Denne opplæringen inneholder de ulike metodene og teknikkene du kan bruke for å fikse feilen 'tillatelse nektet' når du prøver å kjøre Docker-kommandoene.



Husk at den ikke dekker prosessen med å kjøre Docker i et rotløst miljø. Du kan sjekke opplæringen vår om rotløs Docker i følgende ressurs:



Krav:

Som du kan gjette, må du ha følgende for å følge med på dette innlegget:





    1. Docker versjon 20.0 og nyere
    2. Sudo- eller root-tillatelser på vertssystemet

Hva er 'Tillatelse nektet'-feilen?

Når feilen 'tillatelse nektet' oppstår i Docker, betyr det at vertssystemet ikke kan etablere kommunikasjon med Docker-demonen på grunn av utilstrekkelige tillatelser. Et eksempel er vist i følgende:

$ docker run -den busybox sh



Hvis du støter på den gitte feilen, kan du bruke noen av de følgende metodene for å lære hvordan du fikser den.



Metode 1: Kjør Docker som root

Den første og mest åpenbare metoden for å løse Dockers 'tillatelse nektet'-feil er å bruke kommandoen 'sudo'. Hvis du har sudo-rettigheter, kan du fikse det ved å kjøre den tilknyttede kommandoen ved å bruke sudo.

For eksempel, for å fikse nevnte feil, kan vi legge til sudo før kommandoen som følger:

$ sudo docker run -den busybox sh



Som du kan se, henter Docker de nødvendige bildene og kjører beholderen.

Metode 2: Start Docker Daemon på nytt

Noen ganger kan du få feilen 'tillatelse nektet' i Docker hvis motoren har et problem. I stedet for manuelt å spore opp problemet, kan du prøve en rask omstart av Docker-demonen for å laste den på nytt.

Start med å sjekke statusen til Docker-demonen som følger:

$ docker systemctl status docker



Når du har sikret at Docker kjører, starter du tjenesten på nytt med følgende kommando:

$ sudo systemctl start docker på nytt


Dette bør starte opp Docker-demonen og fikse ethvert potensielt problem som kan hindre deg i å kjøre en kommando.

Metode 3: Aktiver ikke-rootbrukeren

En annen metode du kan bruke for å løse 'tillatelse nektet'-feilen i Docker, er å la ikke-rootbrukere utføre Docker-kommandoene.

For å aktivere denne metoden, logg inn på vertssystemet og opprette en ny gruppe for Docker.

$ sudo gruppeadd -f havnearbeider


Deretter legger du til enhver bruker du ønsker i Docker-gruppen som følger:

$ sudo brukermod -aG docker linuxhint


Den forrige kommandoen skal legge Linuxhint-brukeren til Docker-gruppen.

Til slutt, bruk gruppeendringene på gjeldende økt ved å bruke følgende kommando:

$ newgrp docker


Når du er ferdig, kan du kjøre en hvilken som helst Docker-kommando uten å bruke sudo for noen bruker i Docker-gruppen.

Metode 4: Konfigurer Docker-tillatelsene på nytt

Den neste metoden du kan bruke er å tilbakestille tillatelsene for Docker-sockets. Start med å endre eierskapet til Docker Unix-kontakten ved å kjøre følgende kommando:

$ sudo chown root:docker / var / løpe / docker.sock


Deretter tar du eierskap til den skjulte Docker-katalogen i hjemmekatalogen din ved å bruke kommandoen som følger:

$ sudo chown -R ' $USER ' : ' $USER ' $HJEM / .docker


Til slutt, tilordne gruppen med lese- og skrivetillatelser til katalogen som følger:

$ sudo chmod -R g+rw ' $HJEM /.docker'


De angitte metodene bør angi tilstrekkelige tillatelser for viktige Docker-filer og -kataloger.

Konklusjon

I denne opplæringen lærte vi hvordan vi kan bruke de fire hovedmetodene for å løse Docker-feilen 'tillatelse nektet' når vi påkaller en Docker-kommando.