Docker fără rădăcini

Docker Fara Radacini



Docker este unul dintre cele mai puternice și influente instrumente pentru dezvoltarea și implementarea aplicațiilor moderne. În calitate de dezvoltatori, îl folosim pe mașinile noastre locale pentru a configura și a configura rapid medii care se potrivesc nevoilor aplicației noastre în câteva secunde.

Cu toate acestea, atunci când lucrăm în Docker, este posibil să întâlnim situații în care trebuie să creăm și să folosim resurse Docker, dar nu avem acces root.

Sau poate doriți să permiteți mai multor utilizatori dintr-un sistem dat să acceseze și să utilizeze Docker fără a acorda permisiunea root tuturor utilizatorilor.







În acest tutorial, vom afla despre Docker fără root, ce înseamnă, cum funcționează și cum îl putem folosi pentru a permite utilizatorilor fără acces root să utilizeze Docker și serviciile asociate acestuia.



Ce este un Docker fără rădăcină?

În mod implicit, odată ce instalați Docker, demonul Docker și instrumentele sale necesită privilegii de rădăcină pe sistemul gazdă. Acest lucru poate duce în mod semnificativ la un risc de securitate dacă Docker este compromis, ceea ce poate oferi acces root atacatorului.



Rootless Docker este o caracteristică care ne permite să folosim și să rulăm demonul Docker și containerele asociate fără permisiuni de root.





Cum functioneaza

Deși poate fi o provocare să te scufunzi în funcționarea tehnică a unui mediu docker fără rădăcină, următoarea este o prezentare generală la nivel înalt care explică ce face un docker fără rădăcină și cum funcționează sub capotă.

Spații de nume de utilizator – Una dintre caracteristicile semnificative pe care le utilizează un docker fără rădăcină este spațiile de nume ale utilizatorilor. Această caracteristică fundamentală a nucleului Linux permite proceselor să aibă ID-uri diferite de utilizator și grup în interiorul spațiului de nume, comparativ cu exteriorul. Aceasta înseamnă că un proces poate rula ca utilizator rădăcină în spațiul său de nume, dar în afara acestuia, rulează ca utilizator obișnuit.



Rețele – Următoarea caracteristică a Docker fără rădăcină este conectarea în rețea. În mod implicit, demonul docker normal se bazează pe stive de rețea, cum ar fi iptables și bridge-uri care necesită permisiuni root.

Docker profită de funcții precum slirp4netns, care oferă o stivă TCP/IP în modul utilizator într-un docker fără rădăcină. Acest lucru îi permite lui Docker să acceseze rețeaua fără permisiunea root pe sistemul gazdă.

Depozitare – Următoarea parte esențială a unui docker fără root este driverul de stocare. În mod implicit, Docker utilizează un driver de stocare overlay2, care, după cum puteți ghici, necesită permisiuni root. În schimb, o instanță docker fără rădăcină folosește driverul fuse-overlayfs. Acest driver se bazează pe suprapunerea FUSE fs, care ne permite să-l montam fără permisiuni root.

Cele de mai sus sunt câteva dintre componentele esențiale ale unei instanțe docker fără rădăcină. Amintiți-vă că acest lucru nu explorează funcționarea completă a unui docker fără rădăcină. Luați în considerare documentația pentru a afla mai multe.

Rootless Docker – Cerințe

Să trecem de la teorie și să învățăm cum să creăm și să configuram un mediu Docker fără rădăcină.

Pentru a urma această postare, asigurați-vă că aveți următoarele:

  1. Un sistem bazat pe Linux cu permisiuni root.
  2. Acces la retea.

Configurarea sistemului cu UIDMap

Înainte de a instala și configura Docker, trebuie să instalăm și să configuram sistemul cu utilitarul uidmap.

UIDMap ne permite să gestionăm mapările UID și GUI ale proceselor dintr-un sistem Linux în conținutul spațiilor de nume de utilizator. Vă amintiți când am menționat că Docker fără rădăcină profită de spațiile de nume ale utilizatorilor? Acest instrument ne va permite să specificăm mapările UID și GID și spațiile de nume corespunzătoare.

Începeți prin a reîmprospăta pachetele de sistem după cum urmează:

$ sudo apt-get update

Apoi, instalați utilitarul uidmap așa cum se arată:

$ sudo apt-get install uidmap -și

Instalarea Docker fără rădăcină

Următorul pas este să procesați și să instalați Docker fără root. Putem face acest lucru urmând pașii simpli descriși mai jos:

Începeți prin a descărca scriptul de instalare docker fără rădăcină din linkul de mai jos:

https://get.docker.com/rootless

Puteți utiliza cURL sau WGET.

$ răsuci -sSL https: // get.docker.com / fără rădăcini | SH

Rețineți că nu puteți rula comanda de mai sus ca utilizator root.

Odată ce instalarea este finalizată, editați fișierul .bashrc folosind editorul de text preferat:

$ nano .bashrc

Apoi, adăugați următoarele intrări în fișierul de configurare bashrc:

export XDG_RUNTIME_DIR = / Acasă / ubuntu / .docher / alerga

export CALE = / Acasă / ubuntu / cos: $PATH

export DOCKER_HOST =unix: /// Acasă / ubuntu / .docher / alerga / docker.ciorap

Asigurați-vă că schimbați utilizatorul de la „ubuntu” la utilizatorul pe care doriți să îl instalați Docker. Ieșirea scriptului vă va oferi conținutul de adăugat la fișierul .bashrc.

Salvați modificările și închideți editorul.

În pasul următor, trebuie să inițiem demonul Docker fără rădăcină. Putem face acest lucru folosind systemctl, așa cum se arată în comanda de mai jos:

systemctl --ubuntu porniți docker

Odată pornit, puteți utiliza comenzile Docker pentru a porni și configura containerele Docker.

Concluzie

În acest tutorial, am învățat funcționalitatea Docker fără rădăcină, cum funcționează și cum îl putem configura pe un sistem Linux. Nu ezitați să verificați documentația docker fără rădăcină pentru a afla mai multe.