Что виртуализирует Docker?

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

Ответ

Docker виртуализирует процессы и их окружение, а не аппаратное обеспечение. Он создает изолированные контейнеры, которые разделяют ядро хостовой операционной системы, но имеют собственную файловую систему, сетевой стек и пространства имён.

Ключевые механизмы изоляции:

  • Namespaces: Изолируют процессы, сеть, пользователей и т.д. (например, PID namespace даёт контейнеру собственный набор PID).
  • Control Groups (cgroups): Ограничивают и отслеживают использование ресурсов (CPU, память, I/O).
  • Union File Systems (OverlayFS): Обеспечивают наслоение образов для эффективного хранения и создания контейнеров.

Пример: При запуске docker run -it ubuntu bash создается контейнер с изолированным процессом bash, работающим в собственном файловом пространстве (образ Ubuntu) и сетевом пространстве имён.

Это делает контейнеры гораздо более легковесными и быстрыми по сравнению с полными виртуальными машинами, которые виртуализируют всё железо.