Как работает Docker?

«Как работает Docker?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Docker — это платформа для контейнеризации приложений. Она изолирует приложения и их зависимости в легковесных, переносимых контейнерах, используя возможности ядра операционной системы (namespaces и cgroups).

Ключевые компоненты:

  • Docker Engine: Демон (dockerd), который создает и управляет контейнерами.
  • Образы (Images): Неизменяемые шаблоны, содержащие код, зависимости и конфигурацию. Например, openjdk:17.
  • Контейнеры: Запущенные экземпляры образов.
  • Dockerfile: Текстовый файл с инструкциями для сборки образа.
  • Docker Hub: Реестр для хранения и обмена образами.

Пример запуска контейнера:

docker run -it --rm openjdk:17 bash

Как это работает:

  1. Docker Engine извлекает образ из реестра (если его нет локально).
  2. На основе образа создается контейнер — изолированное пространство процессов с собственной файловой системой и сетевым стеком.
  3. Контейнер запускается в качестве процесса на хосте, но изолирован от других контейнеров и основной системы.

Преимущества перед виртуальными машинами:

  • Легковесность: Контейнеры используют ядро хоста, а не свою ОС, что экономит ресурсы.
  • Скорость: Контейнеры запускаются за секунды.
  • Переносимость: Образ гарантирует идентичное поведение на любом хосте с Docker.
  • Эффективность: На одном хосте можно запустить гораздо больше контейнеров, чем виртуальных машин.