A Distrobox egy olyan program, amivel konténerizált Linux disztribúciókat futtathatunk a gépünkön futó Linuxon belül. Ami miatt nagyon hasznos tud lenni, az az, hogy az alaprendszertől eltérő disztribúciókat, és azon belül eltérő verziókat is használhatunk.
Tehát ha pl. Debiant használunk, telepíthetünk mellé konténerbe egy Arch-ot, egy Fedorát 39-es és 41-et, egy Ubuntu 20.04-et és egy 24.10-et, és mondjuk egy OpenSuse Tumbleweed-et is.
De ahhoz, hogy jobban megértsük a Distrobox működését, nézzük meg, mi az a konténerizációt.
A konténerizáció, azaz a Linuxos operációs-szintű virtualizáció
A konténerizáció egy eléggé "túlterhelt" fogalom lett mára, elég sok, egymástól többé-kevésbé különböző megoldást hívunk konténerizációnak. Amiről itt szó van, az kifejezetten a Linuxos operációs-szintű virtualizáció.
Nos, a konténer tulajdonképpen egy elszeparált futattókörnyezet az operációs rendszeren belül. Egy konténerben futtatott program csak az ugyanabban a konténerben futó processzeket látja, csak az ugyanbban a konténerben lévő fájlokhoz, könyvtárakhoz és hálózati megosztásokhoz fér hozzá, csak a konténernek átadott eszközöket látja, és így tovább. Ráadásul nagyon egyszerűen szabályzhatók a konténerben futó folyamatok erőforrásai (CPU, memória, lemez I/O, stb.). Mindezt a Linux kernel "csípőből" hozza, hiszen a szeparációt megvalósító "kernel namespaces" 2002 óta a Linux kernel része, az erőforrás-szabályozást biztosító "cgroups" pedig 2008 óta, úgyhogy nem egy újkeletű dologról van szó, mondhatni, teljesen kiforrott a technológia. Konténereket szinte mindenki használ, akár úgy is, hogy nem is tud róla - pl. sok NAS is konténerben futtatja az appjait, de a mobilalkalmazások is a saját kis konténerükben futnak.
A konténerek elég rugalmasak, olyan szempontból, hogy futtathatunk bennük csupán egyetlen binárist, vagy belecsomagolhatunk egy binárist a függőségeivel együtt, de nagyon gyakori az is, hogy egy nagyon minimális, de működő Linux disztribúció kerül a konténerbe, és azon a környezeten belül fut a program.
A Distrobox egy segédeszköz, amivel ilyen, konténerizált Linuxot futtathatunk úgy, hogy a létrehozott konténer szorosan integrálódik a rendszerbe.
Maga a Distrobox nem egy konténer implementáció, hanem Dockerre, Podmanre vagy Lilipodra épülve oldja meg a konténerizációt. A Podman a javasolt megoldás, mert "rootless", azaz nem szükséges hozzá, hogy folyamatosan fusson egy root szintű daemon, mint Docker esetében. A konténerekben futó operációs rendszer kernele osztozik a gazdagépen futtatott kernellel, az izoláció kernel szinten történik, tehát a kerneltől "magasabb" (felhasználó-közelibb) szinten lévő rétegek különölnek.