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:
- Docker versjon 20.0 og nyere
- 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:
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:
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:
Til slutt, tilordne gruppen med lese- og skrivetillatelser til katalogen som følger:
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.