Rotløs Docker

Rotlos Docker



Docker er et av de kraftigste og mest innflytelsesrike verktøyene for moderne applikasjonsutvikling og distribusjon. Som utviklere bruker vi det på våre lokale maskiner for raskt å sette opp og konfigurere miljøer som passer applikasjonsbehovene våre i løpet av sekunder.

Men når vi jobber i Docker, kan vi støte på tilfeller der vi trenger å opprette og bruke Docker-ressurser, men ikke har root-tilgang.

Eller kanskje du ønsker å la flere brukere på et gitt system få tilgang til og bruke Docker uten å gi alle brukernes rottillatelse.







I denne opplæringen vil vi lære om rootless Docker, hva det betyr, hvordan det fungerer, og hvordan vi kan bruke det til å la brukere uten root-tilgang bruke Docker og tilhørende tjenester.



Hva er en Rootless Docker?

Som standard, når du har installert Docker, krever Docker-demonen og dens verktøy rotrettigheter på vertssystemet. Dette kan i betydelig grad resultere i en sikkerhetsrisiko hvis Docker kompromitteres, noe som kan gi root-tilgang til angriperen.



Rootless Docker er en funksjon som lar oss bruke og kjøre Docker-demonen og de tilknyttede beholderne uten root-tillatelser.





Hvordan det fungerer

Selv om det kan være utfordrende å dykke ned i de tekniske funksjonene til et rotløst dockermiljø, er følgende en oversikt på høyt nivå som forklarer hva en rotløs docker gjør og hvordan den fungerer under panseret.

Brukernavneområder – En av de viktige funksjonene som en rotløs docker bruker, er brukernavneområder. Denne grunnleggende funksjonen til Linux-kjernen lar prosesser ha forskjellige bruker- og gruppe-IDer inne i navneområdet sammenlignet med utsiden. Dette betyr at en prosess kan kjøres som root-bruker innenfor navneområdet, men utenfor det kjører den som en vanlig bruker.



Nettverk – Den neste funksjonen til rotløs Docker er nettverk. Som standard er den normale docker-demonen avhengig av nettverksstabler som iptables og broer som krever root-tillatelser.

Docker drar fordel av funksjoner som slirp4netns, som gir en brukermodus TCP/IP-stabel i en rotløs docker. Dette gjør at Docker kan få tilgang til nettverket uten rottillatelse på vertssystemet.

Oppbevaring – Den neste viktige delen av en rotløs docker er lagringsdriveren. Som standard bruker Docker en overlay2-lagringsdriver, som, som du kan gjette, krever rottillatelser. I stedet bruker en rotløs docker-forekomst driveren for fuse-overlayfs. Denne driveren er basert på FUSE overlay fs, som lar oss montere den uten root-tillatelser.

Ovennevnte er noen av de essensielle komponentene i en rotløs docker-forekomst. Husk at dette ikke utforsker den fullstendige funksjonen til en rotløs havnearbeider. Vurder dokumentasjonen for å lære mer.

Rootless Docker – Krav

La oss gå fra teorien og lære hvordan du lager og konfigurerer et rotløst Docker-miljø.

For å følge med på dette innlegget, sørg for at du har følgende:

  1. Et Linux-basert system med root-tillatelser.
  2. Nettverkstilgang.

Konfigurere systemet med UIDMap

Før vi installerer og konfigurerer Docker, må vi installere og konfigurere systemet med uidmap-verktøyet.

UIDMap lar oss administrere UID- og GUI-tilordninger av prosessene i et Linux-system i innholdet i brukernavnerom. Husker du da vi nevnte at rotløs Docker utnytter brukernavneområder? Dette verktøyet lar oss spesifisere UID- og GID-tilordningene og deres tilsvarende navneområder.

Start med å oppdatere systempakkene som følger:

$ sudo apt-get oppdatering

Installer deretter uidmap-verktøyet som vist:

$ sudo apt-get install uidmap -og

Installerer Rootless Docker

Det neste trinnet er å behandle og installere rotløs Docker. Vi kan gjøre dette ved å følge de enkle trinnene som er skissert nedenfor:

Start med å laste ned det rotløse docker-installasjonsskriptet fra lenken vist nedenfor:

https://get.docker.com/rootless

Du kan bruke cURL eller WGET.

$ krølle -sSL https: // get.docker.com / rotløs | sh

Merk at du ikke kan kjøre kommandoen ovenfor som root-bruker.

Når installasjonen er fullført, rediger .bashrc-filen din ved å bruke din favoritt tekstredigerer:

$ nano .bashrc

Deretter legger du til følgende oppføringer i bashrc-konfigurasjonsfilen:

eksport XDG_RUNTIME_DIR = / hjem / ubuntu / .docker / løpe

eksport STI = / hjem / ubuntu / bin: $PATH

eksport DOCKER_HOST =unix: /// hjem / ubuntu / .docker / løpe / docker.sock

Sørg for å endre brukeren fra 'ubuntu' til brukeren du ønsker å installere Docker. Skriptutgangen vil gi deg innholdet du skal legge til i .bashrc-filen.

Lagre endringene og lukk redigeringsprogrammet.

I neste trinn må vi starte den rotløse Docker-demonen. Vi kan gjøre dette ved å bruke systemctl, som vist i kommandoen nedenfor:

systemctl --ubuntu starte docker

Når du har startet, kan du bruke Docker-kommandoene til å starte og konfigurere Docker-beholdere.

Konklusjon

I denne opplæringen lærte vi funksjonaliteten til rootless Docker, hvordan den fungerer og hvordan vi kan konfigurere den på et Linux-system. Sjekk gjerne den rotløse docker-dokumentasjonen for å lære mer.