Sobes.tech
Middle

Dockerдеги контейнерлердин изоляциясы эмне негизделген?

sobes.tech AI

AIден жооп

Docker-да контэйнерлерді оқшаулау келесі негізгі технологиялар мен ядро Linux механизмдеріне негізделген:

  1. Namespaces (Атаулар кеңістігі): Көрінуді және жүйелік ресурстарға қол жеткізуді оқшаулау мүмкіндігін береді. Docker бірнеше түрдегі Namespaces-ты пайдаланады:

    • PID namespace: Процестерді оқшаулайды, әрбір контейнер тек өзінің процестерін көреді (контейнер ішіндегі PID 1).
    • Net namespace: Желілік стекіні оқшаулайды (желілік интерфейстер, IP-мекенжайлар, порттар, маршрутизация ережелері).
    • Mnt namespace: Файл жүйесінің монтаж нүктелерін оқшаулайды.
    • UTS namespace: hostname және домендік атын оқшаулайды.
    • IPC namespace: Процестер арасындағы коммуникация ресурстарын (семафорлар, ортақ жад) оқшаулайды.
    • User namespace: Пайдаланушылар мен топтардың ID-ларын оқшаулайды.
  2. Control Groups (cgroups): Жүйелік ресурстарды (CPU, жад, I/O, желілік трафик) топтарға шектеу және бақылау мүмкіндігін береді. Docker пайдаланады:

    • CPU саны немесе процессор уақытының үлесін шектеу.
    • Қол жетімді жадты шектеу.
    • Дискке енгізу/шығу приоритеті немесе шектеу.
    • Желілік трафикті шектеу.
  3. Union File Systems (UnionFS): Файл жүйесінің қабаттарын құрайды. Docker пайдаланады OverlayFS, AUFS (ескі), Btrfs сияқты UnionFS-ты. Бұл:

    • Docker образдарының жеңіл қабаттарын құруға мүмкіндік береді.
    • Негізгі қабаттарды ортақ пайдалану арқылы дискілік кеңістікті тиімді пайдалану.
    • Контейнердегі өзгерістерді жазғанда COW (Copy-on-Write) қабаттарын құру, негізгі образды өзгеріссіз қалдыру.
  4. Seccomp (Secure Computing Mode): Контейнер ішіндегі процестің жүйелік шақыруларын шектейді, бұл шабуыл бетін азайтады. Docker әдепкі бойынша seccomp профилдерін пайдаланады.

  5. AppArmor / SELinux: Қосымша қауіпсіздік және оқшаулау үшін міндетті қатынасты бақылау (MAC) модулдері пайдаланылады, мысалы AppArmor немесе SELinux. Олар процестердің әрекеттерін (файлдарға, желілік ресурстарға қол жеткізу) бақылауды ұсынады. Docker профилдерін пайдалана алады, егер олар хост жүйесінде конфигурацияланған болса.