Docker brez korenin

Docker Brez Korenin



Docker je eno najmočnejših in najvplivnejših orodij za sodoben razvoj in uvajanje aplikacij. Kot razvijalci ga uporabljamo na naših lokalnih računalnikih za hitro nastavitev in konfiguracijo okolij, ki v nekaj sekundah ustrezajo potrebam naše aplikacije.

Vendar pa lahko pri delu v Dockerju naletimo na primere, ko moramo ustvariti in uporabiti sredstva Docker, vendar nimamo korenskega dostopa.

Morda pa želite dovoliti več uporabnikom v danem sistemu dostop do Dockerja in njegovo uporabo, ne da bi vsem uporabnikom dali korenska dovoljenja.







V tej vadnici bomo spoznali Docker brez korenskega dostopa, kaj pomeni, kako deluje in kako ga lahko uporabimo, da uporabnikom brez korenskega dostopa omogočimo uporabo Dockerja in z njim povezanih storitev.



Kaj je Rootless Docker?

Ko namestite Docker, demon Docker in njegova orodja privzeto zahtevajo korenske pravice v gostiteljskem sistemu. To lahko znatno povzroči varnostno tveganje, če je Docker ogrožen, kar lahko napadalcu omogoči korenski dostop.



Rootless Docker je funkcija, ki nam omogoča uporabo in zagon demona Docker in povezanih vsebnikov brez korenskih dovoljenj.





Kako deluje

Čeprav je lahko težko poglobiti se v tehnično delovanje brezkoreninskega docker okolja, je naslednji pregled na visoki ravni, ki pojasnjuje, kaj počne brezroenski docker in kako deluje pod pokrovom.

Uporabniški imenski prostori – Ena od pomembnih funkcij, ki jih uporablja docker brez korenin, so uporabniški imenski prostori. Ta temeljna značilnost jedra Linux omogoča procesom, da imajo različne ID-je uporabnikov in skupin znotraj imenskega prostora v primerjavi z zunanjimi. To pomeni, da se proces lahko izvaja kot korenski uporabnik znotraj svojega imenskega prostora, zunaj tega pa se izvaja kot običajni uporabnik.



Mreženje – Naslednja funkcija Dockerja brez korenin je povezovanje v omrežje. Običajni docker demon se privzeto opira na omrežne sklade, kot so iptables in mostovi, ki zahtevajo korenska dovoljenja.

Docker izkorišča funkcije, kot je slirp4netns, ki zagotavlja sklad TCP/IP v uporabniškem načinu v dockerju brez korenin. To Dockerju omogoča dostop do omrežja brez korenskega dovoljenja v gostiteljskem sistemu.

Shranjevanje – Naslednji bistveni del dockerja brez korenin je gonilnik za shranjevanje. Docker privzeto uporablja gonilnik za shranjevanje overlay2, ki, kot lahko ugibate, zahteva korenska dovoljenja. Namesto tega primerek dockerja brez korenin uporablja gonilnik fuse-overlayfs. Ta gonilnik temelji na prekrivanju FUSE fs, ki nam omogoča namestitev brez korenskih dovoljenj.

Zgoraj je nekaj bistvenih komponent primerka docker brez korenin. Ne pozabite, da to ne raziskuje celotnega delovanja dockerja brez korenin. Če želite izvedeti več, preglejte dokumentacijo.

Rootless Docker – zahteve

Odmaknimo se od teorije in se naučimo, kako ustvariti in konfigurirati okolje Docker brez korenin.

Če želite slediti tej objavi, zagotovite, da imate naslednje:

  1. Sistem na osnovi Linuxa s korenskimi dovoljenji.
  2. Dostop do omrežja.

Konfiguriranje sistema z UIDMap

Pred namestitvijo in konfiguracijo Dockerja moramo namestiti in konfigurirati sistem s pripomočkom uidmap.

UIDMap nam omogoča upravljanje preslikav UID in GUI procesov v sistemu Linux v vsebini uporabniških imenskih prostorov. Se spomnite, ko smo omenili, da Docker brez korenin izkorišča uporabniške imenske prostore? To orodje nam bo omogočilo, da določimo preslikave UID in GID ter njihove ustrezne imenske prostore.

Začnite z osveževanjem sistemskih paketov na naslednji način:

$ sudo posodobitev apt-get

Nato namestite pripomoček uidmap, kot je prikazano:

$ sudo apt-get namestitev uidmap -in

Namestitev Rootless Dockerja

Naslednji korak je obdelava in namestitev Dockerja brez korenin. To lahko storimo tako, da sledimo spodnjim preprostim korakom:

Začnite s prenosom namestitvenega skripta docker brez korenin s spodnje povezave:

https://get.docker.com/rootless

Uporabite lahko cURL ali WGET.

$ curl -sSL https: // get.docker.com / brez korenin | sh

Upoštevajte, da zgornjega ukaza ne morete zagnati kot korenski uporabnik.

Ko je namestitev končana, uredite datoteko .bashrc s svojim najljubšim urejevalnikom besedil:

$ nano .bashrc

Nato v konfiguracijsko datoteko bashrc dodajte naslednje vnose:

izvoz XDG_RUNTIME_DIR = / domov / ubuntu / .docker / teči

izvoz POT = / domov / ubuntu / koš: $PATH

izvoz DOCKER_HOST =unix: /// domov / ubuntu / .docker / teči / docker.sock

Uporabnika »ubuntu« spremenite v uporabnika, za katerega želite namestiti Docker. Izhod skripta vam bo dal vsebino za dodajanje v datoteko .bashrc.

Shranite spremembe in zaprite urejevalnik.

V naslednjem koraku moramo zagnati brezkoreninski demon Docker. To lahko storimo z uporabo systemctl, kot je prikazano v spodnjem ukazu:

systemctl --ubuntu zaženi docker

Po zagonu lahko uporabite ukaze Docker za zagon in konfiguracijo vsebnikov Docker.

Zaključek

V tej vadnici smo se naučili funkcionalnosti Dockerja brez korenin, kako deluje in kako ga lahko konfiguriramo v sistemu Linux. Če želite izvedeti več, preverite dokumentacijo dockerja brez korenin.