Sobes.tech
Middle

Pe ce se bazează izolarea containerelor în Docker?

sobes.tech AI

Răspuns de la AI

Izolarea containerelor în Docker se bazează pe următoarele tehnologii și mecanisme principale ale nucleului Linux:

  1. Namespaces (Spații de nume): Permite izolarea vizibilității și accesului la resursele sistemului. Docker utilizează mai multe tipuri de Namespaces:

    • PID namespace: Izolează procesele, fiecare container vede doar propriile procese (PID 1 în interiorul containerului).
    • Net namespace: Izolează stiva de rețea (interfețe de rețea, adrese IP, porturi, reguli de rutare).
    • Mnt namespace: Izolează punctele de montare ale sistemului de fișiere.
    • UTS namespace: Izolează hostname-ul și numele de domeniu.
    • IPC namespace: Izolează resursele de comunicare între procese (semafori, memorie partajată).
    • User namespace: Izolează ID-urile utilizatorilor și grupurilor.
  2. Control Groups (cgroups): Permite limitarea și controlul consumului de resurse ale sistemului (CPU, memorie, I/O, trafic de rețea) pentru grupuri de procese. Docker utilizează cgroups pentru:

    • Limitarea numărului de CPU sau a fracției de timp CPU.
    • Limitarea memoriei disponibile.
    • Prioritizarea sau limitarea I/O-ului de disc.
    • Limitarea traficului de rețea.
  3. Union File Systems (UnionFS): Creează straturi ale sistemului de fișiere. Docker utilizează UnionFS precum OverlayFS, AUFS (mai vechi), Btrfs. Acestea permit:

    • Crearea de straturi ușoare pentru imaginile Docker.
    • Utilizarea eficientă a spațiului pe disc prin utilizarea comună a straturilor de bază.
    • La înregistrarea modificărilor în container, crearea de straturi COW (Copy-on-Write), fără a modifica imaginea de bază.
  4. Seccomp (Mod de calcul sigur): Limitează apelurile de sistem (syscalls) pe care le poate efectua un proces în interiorul containerului, reducând astfel suprafața de atac. Docker utilizează profile seccomp implicit pentru majoritatea containerelor.

  5. AppArmor / SELinux: Pentru securitate și izolare suplimentară, pot fi utilizate module de control al accesului obligatoriu (MAC), precum AppArmor sau SELinux. Acestea oferă un control mai granular asupra a ceea ce pot face procesele (de exemplu, accesul la fișiere, resursele de rețea). Docker poate utiliza profile AppArmor sau SELinux dacă acestea sunt configurate pe sistemul gazdă.