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:
-
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.
-
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.
-
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ă.
-
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.
-
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ă.