Men når vi arbejder i Docker, kan vi støde på tilfælde, hvor vi skal oprette og bruge Docker-ressourcer, men ikke har root-adgang.
Eller måske ønsker du at tillade flere brugere på et givet system at få adgang til og bruge Docker uden at give alle brugernes root-tilladelse.
I denne tutorial lærer vi om rootless Docker, hvad det betyder, hvordan det virker, og hvordan vi kan bruge det til at give brugere uden root-adgang mulighed for at bruge Docker og dets tilknyttede tjenester.
Hvad er en rodløs docker?
Som standard, når du har installeret Docker, kræver Docker-dæmonen og dens værktøjer root-privilegier på værtssystemet. Dette kan betydeligt resultere i en sikkerhedsrisiko, hvis Docker kompromitteres, hvilket kan give root-adgang til angriberen.
Rootless Docker er en funktion, der giver os mulighed for at bruge og køre Docker-dæmonen og de tilknyttede containere uden root-tilladelser.
Hvordan det virker
Selvom det kan være udfordrende at dykke ned i de tekniske funktioner i et rodløst docker-miljø, er det følgende en oversigt på højt niveau, der forklarer, hvad en rodløs docker gør, og hvordan den fungerer under motorhjelmen.
Brugernavneområder – En af de væsentlige funktioner, som en rodløs docker bruger, er brugernavneområder. Denne grundlæggende egenskab ved Linux-kernen tillader processer at have forskellige bruger- og gruppe-id'er inde i navneområdet sammenlignet med ydersiden. Det betyder, at en proces kan køre som root-bruger inde i sit navneområde, men uden for det kører den som en almindelig bruger.
Netværk – Den næste funktion ved rodløse Docker er netværk. Som standard er den normale docker-dæmon afhængig af netværksstakke såsom iptables og broer, der kræver root-tilladelser.
Docker udnytter funktioner såsom slirp4netns, som giver en brugertilstand TCP/IP-stak i en rodløs docker. Dette gør det muligt for Docker at få adgang til netværket uden root-tilladelse på værtssystemet.
Opbevaring – Den næste væsentlige del af en rodløs docker er lagerdriveren. Som standard bruger Docker en overlay2-lagerdriver, som, som du kan gætte, kræver root-tilladelser. I stedet bruger en rodløs docker-instans driveren til fuse-overlayfs. Denne driver er baseret på FUSE overlay fs, som giver os mulighed for at montere den uden root-tilladelser.
Ovenstående er nogle af de væsentlige komponenter i en rodløs docker-instans. Husk, at dette ikke udforsker den fuldstændige funktion af en rodløs havnearbejder. Overvej dokumentationen for at lære mere.
Rootless Docker – Krav
Lad os flytte fra teorien og lære, hvordan man opretter og konfigurerer et rodløst Docker-miljø.
For at følge med i dette indlæg skal du sørge for at have følgende:
- Et Linux-baseret system med root-tilladelser.
- Netværksadgang.
Konfiguration af systemet med UIDMap
Før vi installerer og konfigurerer Docker, skal vi installere og konfigurere systemet med uidmap-værktøjet.
UIDMap giver os mulighed for at administrere UID- og GUI-kortlægninger af processerne i et Linux-system i indholdet af brugernavneområder. Kan du huske, da vi nævnte, at rodløse Docker udnytter brugernavneområder? Dette værktøj giver os mulighed for at angive UID- og GID-tilknytninger og deres tilsvarende navnerum.
Start med at opdatere systempakkerne som følger:
$ sudo apt-get opdateringInstaller derefter uidmap-værktøjet som vist:
$ sudo apt-get install uidmap -og
Installation af Rootless Docker
Det næste trin er at behandle og installere rodløs Docker. Vi kan gøre dette ved at følge de enkle trin, der er beskrevet nedenfor:
Start med at downloade det rodløse docker-installationsscript fra linket vist nedenfor:
https://get.docker.com/rootless
Du kan bruge cURL eller WGET.
$ krølle -sSL https: // get.docker.com / rodløs | sh
Bemærk, at du ikke kan køre ovenstående kommando som root-bruger.
Når installationen er færdig, skal du redigere din .bashrc-fil ved hjælp af din foretrukne teksteditor:
$ nano .bashrcTilføj derefter følgende indgange til bashrc-konfigurationsfilen:
eksport XDG_RUNTIME_DIR = / hjem / ubuntu / .docker / løbeksport STI = / hjem / ubuntu / beholder: $PATH
eksport DOCKER_HOST =unix: /// hjem / ubuntu / .docker / løb / docker.sock
Sørg for at ændre brugeren fra 'ubuntu' til den bruger, du ønsker at installere Docker. Script-outputtet giver dig det indhold, du skal tilføje til .bashrc-filen.
Gem ændringerne og luk editoren.
I det næste trin skal vi starte den rodløse Docker-dæmon. Vi kan gøre dette ved hjælp af systemctl, som vist i kommandoen nedenfor:
systemctl --ubuntu start dockerNår du er startet, kan du bruge Docker-kommandoerne til at starte og konfigurere Docker-containere.
Konklusion
I denne tutorial lærte vi funktionaliteten af rootless Docker, hvordan det virker, og hvordan vi kan konfigurere det på et Linux-system. Du er velkommen til at tjekke den rodløse docker-dokumentation for at lære mere.