Sobes.tech
Middle

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

  5. 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.