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:
- Een op Linux gebaseerd systeem met rootrechten.
- 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-updateInstalleer 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 .bashrcVoeg vervolgens de volgende vermeldingen toe aan het bashrc-configuratiebestand:
exporteren XDG_RUNTIME_DIR = / thuis / ubuntu / .docker / loopexporteren 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 dockerEenmaal 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.