A Docker konténerek izolációja miben alapul?
sobes.tech MI
Válasz az MI-től
A Docker konténerizáció az alábbi fő Linux kernel technológiákra és mechanizmusokra épül:
-
Namespaces (Névtér):k Lehetővé teszik a rendszer erőforrásainak láthatóságának és hozzáférésének izolálását. A Docker többféle Namespace-t használ:
PID namespace: Izolálja a folyamatokat, minden konténer csak saját folyamatait látja (PID 1 a konténeren belül).Net namespace: Izolálja a hálózati stack-et (hálózati interfészek, IP-címek, portok, útválasztási szabályok).Mnt namespace: Izolálja a fájlrendszer csatlakozási pontjait.UTS namespace: Izolálja a hostname-t és a domain nevet.IPC namespace: Izolálja a folyamatok közötti kommunikációs erőforrásokat (szemaforok, megosztott memória).User namespace: Izolálja a felhasználói és csoport ID-ket.
-
Control Groups (cgroups): Lehetővé teszik a rendszer erőforrásainak (CPU, memória, I/O, hálózati forgalom) korlátozását és ellenőrzését folyamatcsoportokra. A Docker cgroups-ot használ:
- A CPU számának vagy a CPU idő arányának korlátozása.
- A rendelkezésre álló memória korlátozása.
- A lemez I/O priorizálása vagy korlátozása.
- A hálózati forgalom korlátozása.
-
Union File Systems (UnionFS): Rétegeket hoznak létre a fájlrendszerben. A Docker UnionFS-t használ, mint OverlayFS, AUFS (régebbi), Btrfs. Ezek lehetővé teszik:
- Könnyű rétegek létrehozását a Docker képekhez.
- Hatékony tárhelyhasználatot az alaprétegek megosztásával.
- A változtatások írásakor COW (Copy-on-Write) rétegek létrehozását anélkül, hogy módosítanánk az alapképet.
-
Seccomp (Biztonságos számítás mód): Korlátozza a rendszerhívásokat (syscalls), amelyeket egy folyamat végrehajthat a konténeren belül, ezáltal csökkentve a támadási felületet. A Docker alapértelmezett seccomp profilokat használ a legtöbb konténerhez.
-
AppArmor / SELinux: További biztonság és izoláció érdekében, kötelező hozzáférés-ellenőrzési modulokat (MAC) lehet használni, mint az AppArmor vagy a SELinux. Ezek finomabb kontrollt biztosítanak arról, hogy a folyamatok mit tehetnek (pl. fájlokhoz való hozzáférés, hálózati erőforrások). A Docker használhat AppArmor vagy SELinux profilokat, ha azok konfigurálva vannak a gazda rendszeren.