Rodløs Docker

Rodlos Docker



Docker er et af de mest kraftfulde og indflydelsesrige værktøjer til moderne applikationsudvikling og implementering. Som udviklere bruger vi det på vores lokale maskiner til hurtigt at opsætte og konfigurere miljøer, der passer til vores applikationsbehov på få sekunder.

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:

  1. Et Linux-baseret system med root-tilladelser.
  2. 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 opdatering

Installer 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 .bashrc

Tilføj derefter følgende indgange til bashrc-konfigurationsfilen:

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

eksport 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 docker

Nå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.