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:
- Et Linux-basert system med root-tillatelser.
- 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 oppdateringInstaller 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 .bashrcDeretter legger du til følgende oppføringer i bashrc-konfigurasjonsfilen:
eksport XDG_RUNTIME_DIR = / hjem / ubuntu / .docker / løpeeksport 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 dockerNå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.