Sobes.tech
Middle

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:

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

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