Назад к вопросам
Junior
76
questionbank

Что используется внутри Docker-контейнера?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Docker-контейнер использует ряд технологий для изоляции процессов и ресурсов:

  • Namespaces ядра Linux: Предоставляют изоляцию для различных системных ресурсов, таких как:

    • PID (Process ID): Изолируют процессы.
    • Net (Network): Изолируют сетевой стек.
    • Mount (mnt): Изолируют точки монтирования файловой системы.
    • UTS (Unix Timesharing System): Изолируют имя хоста и доменное имя.
    • IPC (Interprocess Communication): Изолируют механизмы межпроцессного взаимодействия.
    • User (User & Group ID): Изолируют идентификаторы пользователей и групп.
  • Control Groups (cgroups): Управляют и ограничивают использование аппаратных ресурсов для процессов внутри контейнера, включая:

    • CPU: Ограничение использования процессорного времени.
    • Memory: Ограничение использования оперативной памяти.
    • Block I/O: Ограничение пропускной способности дискового ввода-вывода.
    • Net I/O: Ограничение пропускной способности сетевого ввода-вывода.
  • Union File Systems: Предоставляют собой объединенную файловую систему, состоящую из нескольких слоев. Docker использует такие файловые системы как OverlayFS, AUFS, Btrfs, ZFS. Это позволяет эффективно управлять хранением образов и создавать слои только для изменений.

  • Процесс Docker Daemon: Управляет жизненным циклом контейнеров (создание, запуск, остановка, удаление).

  • Container Runtime: Низкоуровневое исполнение контейнера. Docker в разное время использовал и поддерживает различные рантаймы, такие как runc (спецификация OCI), containerd.

  • Образ контейнера: Набор слоев файловой системы и метаданных, необходимых для запуска приложения.

  • Приложение: Исполняемый код, библиотеки, зависимости и конфигурационные файлы, составляющие саму программу, которая работает внутри контейнера.

По сути, контейнер — это изолированный процесс (или набор процессов), работающий в ограниченной среде, предоставляемой ядром Linux и управляемой Docker.