Na čom je založená izolácia kontajnerov v Docker?
sobes.tech AI
Odpoveď od AI
Izolácia kontajnerov v Dockeri je založená na nasledujúcich hlavných technológiách a mechanizmoch jadra Linux:
-
Namespaces (Priestor názvov): Umožňujú izolovať viditeľnosť a prístup k systémovým zdrojom. Docker používa niekoľko typov Namespaces:
PID namespace: Izoluje procesy, každý kontajner vidí iba svoje procesy (PID 1 vo vnútri kontajnera).Net namespace: Izoluje sieťový stack (sieťové rozhrania, IP adresy, porty, pravidlá smerovania).Mnt namespace: Izoluje body pripojenia súborového systému.UTS namespace: Izoluje hostname a doménové meno.IPC namespace: Izoluje prostriedky komunikácie medzi procesmi (semafory, zdieľaná pamäť).User namespace: Izoluje ID používateľov a skupín.
-
Control Groups (cgroups): Umožňujú obmedziť a kontrolovať spotrebu systémových zdrojov (CPU, pamäť, I/O, sieťový prenos) pre skupiny procesov. Docker používa cgroups na:
- Obmedzenie počtu CPU alebo podielu časť CPU.
- Obmedzenie dostupnej pamäti.
- Prioritizáciu alebo obmedzenie vstupu/výstupu disku.
- Obmedzenie sieťového prenosu.
-
Union File Systems (UnionFS): Vytvára vrstvy súborového systému. Docker používa také UnionFS ako OverlayFS, AUFS (staršia), Btrfs. Umožňujú:
- Vytvárať ľahké vrstvy pre Docker obrazy.
- Efektívne využívať diskový priestor vďaka spoločnému využívaniu základných vrstiev.
- Pri zápise zmien v kontajneri vytvárať COW (Copy-on-Write) vrstvy, bez zmeny základného obrazu.
-
Seccomp (Secure Computing Mode): Obmedzuje systémové volania (syscalls), ktoré môže vykonávať proces vnútri kontajnera, čím znižuje povrch útoku. Docker používa predvolené profily seccomp pre väčšinu kontajnerov.
-
AppArmor / SELinux: Pre dodatočnú bezpečnosť a izoláciu môžu byť použité moduly nútenej kontroly prístupu (Mandatory Access Control - MAC), ako sú AppArmor alebo SELinux. Poskytujú detailnejšiu kontrolu nad tým, čo môžu procesy robiť (napríklad prístup k súborom, sieťovým zdrojom). Docker môže používať profily AppArmor alebo SELinux, ak sú nakonfigurované na hostiteľskom systéme.