На каких технологиях основан Docker?

«На каких технологиях основан Docker?» — вопрос из категории Docker, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные технологии:

  1. Linux Namespaces — обеспечивают изоляцию процессов, сети, файловой системы и других ресурсов. Каждый контейнер получает собственные пространства имён (PID, NET, MNT, IPC, UTS, User).
  2. Control Groups (cgroups) — ограничивают и отслеживают использование ресурсов (CPU, память, дисковый I/O, сеть) для группы процессов.
  3. Union File Systems (OverlayFS, AUFS) — позволяют создавать образы из накладывающихся слоёв (read-only слои базового образа + read-write слой контейнера), что обеспечивает эффективность и лёгкость образов.
  4. Container Runtime (runc) — низкоуровневая реализация контейнеров, соответствующая спецификации Open Container Initiative (OCI). Именно runc создаёт и запускает контейнеры, используя namespaces и cgroups.

Пример Dockerfile, который использует эти технологии:

# Базовый слой образа (использует UnionFS)
FROM alpine:latest

# Команда, выполняемая в изолированном процессе (namespace)
RUN apk add --no-cache nginx

# Точка входа для контейнера
CMD ["nginx", "-g", "daemon off;"]

Эти технологии вместе позволяют Docker создавать переносимые, изолированные и ресурсоэффективные среды выполнения приложений.