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: Ізаляе рэсурсы міжпрацэснай камунікацыі (IPC) (семафоры, дзеляная памяць).
    • User namespace: Ізаляе ID карыстальнікаў і груп.
  2. Control Groups (cgroups): Дазваляюць абмяжоўваць і кантраляваць спажыванне сістэмных рэсурсаў (CPU, памяць, I/O, сеткавы трафік) для груп працэсаў. Docker выкарыстоўвае cgroups для:

    • Абмежавання колькасці CPU або долі працэсарнага часу.
    • Абмежавання даступнай памяці.
    • Прыарытэтызацыі або абмежавання ўводу/вываду дыска.
    • Абмежавання сеткавага трафіку.
  3. Union File Systems (UnionFS): Ствараюць слоі файлавай сістэмы. Docker выкарыстоўвае такія UnionFS як OverlayFS, AUFS (старэйшая), Btrfs. Яны дазваляюць:

    • Ствараць лёгкія слоі для образаў Docker.
    • Эфектыўна выкарыстоўваць дысковы прастор за кошт агульнага выкарыстання базавых слоёў.
    • Пры запісе змен у кантэйнеры ствараць COW (Copy-on-Write) слоі, не змяняючы базавы образ.
  4. Seccomp (Secure Computing Mode): Абмяжоўвае сістэмныя выклікі (syscalls), якія можа выконваць працэс унутры кантэйнера, тым самым зніжаючы паверхню атакі. Docker выкарыстоўвае профілі seccomp па змаўчанні для большасці кантэйнераў.

  5. AppArmor / SELinux: Для дадатковай бяспекі і ізаляцыі могуць выкарыстоўвацца модулі прымусовага кантролю доступу (Mandatory Access Control - MAC), такія як AppArmor або SELinux. Яны прадастаўляюць больш гранулярны кантроль над тым, што могуць рабіць працэсы (напрыклад, доступ да файлаў, сеткавых рэсурсаў). Docker можа выкарыстоўваць профілі AppArmor або SELinux, калі яны настроены на хоставай сістэме.