Docker обеспечивает несколько уровней изоляции для контейнеров, обеспечивая разные уровни безопасности и изоляции ресурсов:
Изолированное пространство имен (Namespaces):
PID namespaces: Каждый контейнер имеет свое собственное пространство процессов, что позволяет контейнерам иметь свои уникальные списки процессов.
Network namespaces: Предоставляют каждому контейнеру свой собственный стек сетевых интерфейсов, IP-адресов, таблицы маршрутизации и прочие сетевые ресурсы.
Mount namespaces: Позволяют контейнерам иметь своё собственное пространство монтирования файловых систем, что обеспечивает изоляцию файловых ресурсов.
Control Groups (cgroups): Cgroups позволяют ограничивать и управлять ресурсами, выделенными для контейнера, такими как CPU, память, I/O и другие ресурсы. Это позволяет контролировать и устанавливать лимиты на использование ресурсов каждым контейнером.
AppArmor и SELinux:
AppArmor: Механизм безопасности Linux, который позволяет ограничивать возможности программ и контролировать их доступ к файлам, сети и другим ресурсам.
SELinux (Security-Enhanced Linux): Обеспечивает мандатное управление доступом, позволяя администраторам определять правила безопасности для процессов и файлов.
Seccomp профили:
Seccomp (Secure Computing Mode) позволяет ограничивать системные вызовы, которые могут быть выполнены контейнером, что уменьшает поверхность атаки за счет ограничения доступа к системным ресурсам.
Комбинация этих механизмов обеспечивает изоляцию контейнеров и позволяет им работать в безопасной и независимой среде, не влияя на другие контейнеры или хост-систему.