Când lucrați cu Docker, este posibil să întâlniți o instanță în care comanda returnează o eroare „permisiune refuzată”. Această eroare apare atunci când încercați să rulați Docker fără permisiuni suficiente pentru comandă.
Docker necesită permisiuni sudo sau root pentru a executa comenzile asociate în mod implicit. Încercarea de a rula orice comandă fără privilegiile necesare duce la infama eroare „permisiune refuzată”.
Acest tutorial oferă diferitele metode și tehnici pe care le puteți utiliza pentru a remedia eroarea „permisiune refuzată” atunci când încercați să rulați comenzile Docker.
Rețineți că nu acoperă procesul de rulare a Docker într-un mediu fără rădăcină. Puteți verifica tutorialul nostru despre Docker fără rădăcină în următoarea resursă:
Cerințe:
După cum puteți ghici, pentru a urma această postare, trebuie să aveți următoarele:
- Docker versiunea 20.0 și mai sus
- Permisiuni Sudo sau root pe sistemul gazdă
Ce este eroarea „Permisiunea refuzată”?
Când apare eroarea „permisiune refuzată” în Docker, înseamnă că sistemul gazdă nu poate stabili o comunicare cu demonul Docker din cauza permisiunilor insuficiente. Un exemplu este prezentat în cele ce urmează:
$ docker run -aceasta busybox SH
Dacă întâmpinați eroarea dată, puteți utiliza unele dintre următoarele metode pentru a afla cum să o remediați.
Metoda 1: Rulați Docker ca rădăcină
Prima și cea mai evidentă metodă de rezolvare a erorii „permisiune refuzată” a lui Docker este utilizarea comenzii „sudo”. Dacă aveți privilegii sudo, îl puteți remedia rulând comanda asociată folosind sudo.
De exemplu, pentru a remedia eroarea menționată, putem adăuga sudo înainte de comandă, după cum urmează:
$ sudo docker run -aceasta busybox SH
După cum puteți vedea, Docker extrage cu succes imaginile necesare și rulează containerul.
Metoda 2: Reporniți Daemonul Docker
Uneori, puteți obține eroarea „permisiune refuzată” în Docker dacă motorul are o problemă. În loc să urmăriți manual problema, puteți încerca o repornire rapidă a demonului Docker pentru a-l reîncărca.
Începeți prin a verifica starea demonului Docker după cum urmează:
$ docker systemctl status docker
După ce vă asigurați că Docker rulează, reporniți serviciul cu următoarea comandă:
Acest lucru ar trebui să pornească demonul Docker și să remedieze orice problemă potențială care ar putea să vă împiedice să executați orice comandă.
Metoda 3: Activați utilizatorul non-root
O altă metodă pe care o puteți folosi pentru a rezolva eroarea „permisiune refuzată” în Docker este să permiteți utilizatorilor non-root să execute comenzile Docker.
Pentru a activa această metodă, conectați-vă la sistemul gazdă și creați un nou grup pentru Docker.
$ sudo groupadd -f docher
Apoi, adăugați orice utilizator pe care îl doriți în grupul Docker, după cum urmează:
Comanda anterioară ar trebui să adauge utilizatorul linuxhint la grupul Docker.
În cele din urmă, aplicați modificările grupului la sesiunea curentă folosind următoarea comandă:
$ newgrp docker
Odată finalizat, puteți rula orice comandă Docker fără a utiliza sudo pentru orice utilizator din grupul Docker.
Metoda 4: Reconfigurați permisiunile Docker
Următoarea metodă pe care o puteți utiliza este resetarea permisiunilor pentru socket-urile Docker. Începeți prin a schimba dreptul de proprietate asupra socket-ului Docker Unix, rulând următoarea comandă:
$ sudo chown root:docker / a fost / alerga / docker.ciorap
Apoi, preluați proprietatea directorului Docker ascuns din directorul dvs. de acasă utilizând comanda după cum urmează:
În cele din urmă, atribuiți grupului cu permisiunile de citire și scriere directorului după cum urmează:
Metodele furnizate ar trebui să stabilească permisiuni suficiente pentru fișierele și directoarele esențiale Docker.
Concluzie
În acest tutorial, am învățat cum putem folosi cele patru metode principale pentru a rezolva eroarea „permisiune refuzată” Docker atunci când invocăm o comandă Docker.