Wortelloze Docker

Wortelloze Docker



Docker is een van de krachtigste en invloedrijkste tools voor de ontwikkeling en implementatie van moderne applicaties. Als ontwikkelaars gebruiken we het op onze lokale machines om snel en binnen enkele seconden omgevingen op te zetten en te configureren die aan onze applicatiebehoeften voldoen.

Wanneer we in Docker werken, kunnen we echter gevallen tegenkomen waarin we Docker-bronnen moeten maken en gebruiken, maar geen root-toegang hebben.

Of misschien wilt u meerdere gebruikers op een bepaald systeem toegang geven tot Docker en deze gebruiken zonder de root-rechten van alle gebruikers te geven.







In deze tutorial leren we over rootless Docker, wat het betekent, hoe het werkt en hoe we het kunnen gebruiken om gebruikers zonder root-toegang Docker en de bijbehorende services te laten gebruiken.



Wat is een rootloze docker?

Zodra u Docker installeert, vereisen de Docker-daemon en de bijbehorende tools standaard root-rechten op het hostsysteem. Dit kan aanzienlijk leiden tot een beveiligingsrisico als Docker wordt aangetast, waardoor de aanvaller root-toegang kan krijgen.



Rootless Docker is een functie waarmee we de Docker-daemon en de bijbehorende containers kunnen gebruiken en uitvoeren zonder root-rechten.





Hoe het werkt

Hoewel het een uitdaging kan zijn om in de technische werking van een rootless docker-omgeving te duiken, is het volgende een overzicht op hoog niveau waarin wordt uitgelegd wat een rootless docker doet en hoe deze onder de motorkap werkt.

Gebruikersnaamruimten – Een van de belangrijkste kenmerken die een rootless docker gebruikt, zijn gebruikersnaamruimten. Dit fundamentele kenmerk van de Linux-kernel maakt het mogelijk dat processen binnen de naamruimte verschillende gebruikers- en groeps-ID's hebben in vergelijking met daarbuiten. Dit betekent dat een proces binnen de naamruimte als rootgebruiker kan worden uitgevoerd, maar daarbuiten als gewone gebruiker.



Netwerken – De volgende functie van rootless Docker is netwerken. Standaard vertrouwt de normale docker-daemon op netwerkstacks zoals iptables en bridges waarvoor rootrechten nodig zijn.

Docker maakt gebruik van functies zoals slirp4netns, dat een TCP/IP-stack in gebruikersmodus biedt in een rootloze docker. Hierdoor heeft Docker toegang tot het netwerk zonder root-toestemming op het hostsysteem.

Opslag – Het volgende essentiële onderdeel van een rootless docker is het opslagstuurprogramma. Standaard gebruikt Docker een overlay2-opslagstuurprogramma, waarvoor, zoals u kunt raden, rootrechten vereist zijn. In plaats daarvan gebruikt een rootless docker-instantie het stuurprogramma fuse-overlayfs. Dit stuurprogramma is gebaseerd op de FUSE-overlay fs, waardoor we het kunnen koppelen zonder rootrechten.

Het bovenstaande zijn enkele van de essentiële componenten van een rootless docker-instantie. Bedenk dat dit niet de volledige werking van een rootless docker onderzoekt. Bekijk de documentatie voor meer informatie.

Rootless Docker – Vereisten

Laten we de theorie achter ons laten en leren hoe we een rootloze Docker-omgeving kunnen creëren en configureren.

Als u dit bericht wilt volgen, moet u ervoor zorgen dat u over het volgende beschikt:

  1. Een op Linux gebaseerd systeem met rootrechten.
  2. Netwerktoegang.

Het systeem configureren met UIDmap

Voordat we Docker installeren en configureren, moeten we het systeem installeren en configureren met het uidmap-hulpprogramma.

Met UIDmap kunnen we UID- en GUI-toewijzingen van de processen in een Linux-systeem beheren in de inhoud van gebruikersnaamruimten. Weet je nog dat we zeiden dat rootless Docker misbruik maakt van gebruikersnaamruimten? Met deze tool kunnen we de UID- en GID-toewijzingen en de bijbehorende naamruimten specificeren.

Begin met het vernieuwen van de systeempakketten als volgt:

$ sudo apt-get-update

Installeer vervolgens het uidmap-hulpprogramma zoals weergegeven:

$ sudo apt-get-installatie uidkaart -En

Rootless Docker installeren

De volgende stap is het verwerken en installeren van rootless Docker. We kunnen dit doen door de eenvoudige stappen hieronder te volgen:

Begin met het downloaden van het rootless docker-installatiescript via de onderstaande link:

https://get.docker.com/rootless

U kunt cURL of WGET gebruiken.

$ Krul -sSL https: // get.docker.com / wortelloos | sch

Houd er rekening mee dat u de bovenstaande opdracht niet als rootgebruiker kunt uitvoeren.

Zodra de installatie is voltooid, bewerkt u uw .bashrc-bestand met uw favoriete teksteditor:

$ nano .bashrc

Voeg vervolgens de volgende vermeldingen toe aan het bashrc-configuratiebestand:

exporteren XDG_RUNTIME_DIR = / thuis / ubuntu / .docker / loop

exporteren PAD = / thuis / ubuntu / bak: $PAD

exporteren DOCKER_HOST =unix: /// thuis / ubuntu / .docker / loop / docker.sok

Zorg ervoor dat u de gebruiker wijzigt van 'ubuntu' naar de gebruiker die u Docker wilt installeren. De scriptuitvoer geeft u de inhoud die u aan het .bashrc-bestand kunt toevoegen.

Sla de wijzigingen op en sluit de editor.

In de volgende stap moeten we de rootloze Docker-daemon starten. We kunnen dit doen met systemctl, zoals weergegeven in de onderstaande opdracht:

systeemctl --ubuntu start docker

Eenmaal gestart, kunt u de Docker-opdrachten gebruiken om Docker-containers te starten en te configureren.

Conclusie

In deze tutorial leerden we de functionaliteit van rootless Docker, hoe het werkt en hoe we het op een Linux-systeem kunnen configureren. Bekijk gerust de rootless docker-documentatie voor meer informatie.