Docker-də konteyner izolasyonunun əsası nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Docker konteynerlərinin izolyasiyası aşağıdakı əsas Linux nüvə texnologiyaları və mexanizmlərinə əsaslanır:
-
Namespaces (Adlar sahələri): Sistem resurslarının görünüşünü və girişini izolyasiya etməyə imkan verir. Docker müxtəlif Namespace növlərindən istifadə edir:
PID namespace: Prosesləri izolyasiya edir, hər konteyner yalnız öz proseslərini görür (konteyner daxilində PID 1).Net namespace: Şəbəkə yığını (şəbəkə interfeysləri, IP ünvanları, portlar, marşrutlaşdırma qaydaları) izolyasiya edir.Mnt namespace: Fayl sisteminin montaj nöqtələrini izolyasiya edir.UTS namespace: hostname və domen adını izolyasiya edir.IPC namespace: Proseslərarası əlaqə resurslarını (semaforlar, paylaşılan yaddaş) izolyasiya edir.User namespace: İstifadəçi və qrup ID-lərini izolyasiya edir.
-
Control Groups (cgroups): Sistem resurslarının (CPU, yaddaş, I/O, şəbəkə trafiki) istifadəsini məhdudlaşdırmağa və idarə etməyə imkan verir. Docker cgroups istifadə edir:
- CPU sayını və ya CPU vaxt payını məhdudlaşdırmaq.
- Mövcud yaddaşı məhdudlaşdırmaq.
- Disk I/O prioriteti və ya məhdudiyyətləri.
- Şəbəkə trafiki məhdudlaşdırmaq.
-
Union File Systems (UnionFS): Fayl sisteminin qatlarını yaradır. Docker OverlayFS, AUFS (köhnə), Btrfs kimi UnionFS istifadə edir. Bu imkanlar:
- Docker şəkilləri üçün yüngül qatlar yaratmaq.
- Əsas qatların ümumi istifadəsi ilə disk sahəsini səmərəli istifadə etmək.
- Konteynerdə dəyişikliklər qeyd edilərkən, əsas şəkli dəyişdirmədən COW (Copy-on-Write) qatları yaratmaq.
-
Seccomp (Təhlükəsiz Hesablama Modu): Konteyner daxilində prosesin edə biləcəyi sistem çağırışlarını (syscalls) məhdudlaşdırır, bu da hücum səthini azaldır. Docker çoxlu konteyner üçün seccomp profillərini standart olaraq istifadə edir.
-
AppArmor / SELinux: Əlavə təhlükəsizlik və izolyasiya üçün, məcburi giriş nəzarəti (MAC) modulları, məsələn, AppArmor və ya SELinux istifadə edilə bilər. Bu modullar proseslərin nə edə biləcəyinə daha dəqiq nəzarət təmin edir (məsələn, fayllara giriş, şəbəkə resursları). Docker, əgər onları host sistemində konfiqurasiya edibsə, AppArmor və ya SELinux profillərindən istifadə edə bilər.