Какие особенности Docker вы знаете?

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

Ответ

Docker — это платформа для контейнеризации приложений. Основные особенности:

  • Изоляция процессов — контейнеры используют пространства имён (namespaces) и контрольные группы (cgroups) ядра Linux для изоляции процессов, сетей и файловой системы.
  • Портативность — образ Docker содержит всё необходимое для запуска приложения и работает одинаково на любой системе с установленным Docker Engine (разработка, тестирование, продакшен).
  • Слоистая файловая система — образы строятся из неизменяемых слоёв. Это ускоряет сборку (переиспользуются кэшированные слои) и экономит дисковое пространство.
  • Dockerfile — декларативный способ описания образа. Пример минимального Dockerfile для веб-сервера:
    FROM nginx:alpine
    COPY ./site-content /usr/share/nginx/html
    EXPOSE 80
    CMD ["nginx", "-g", "daemon off;"]
  • Docker Hub и приватные реестры — централизованное хранилище готовых образов (Docker Hub) и возможность развёртывания собственных реестров (Harbor, GitLab Container Registry).
  • Сети и тома — изолированные сетевые драйверы (bridge, host, overlay) и тома (volumes) для управления состоянием (persistent storage) и обмена данными между контейнерами.
  • Интеграция с оркестраторами — Docker-образы являются стандартной единицей развёртывания для Kubernetes, Docker Swarm и других оркестраторов.

Важное ограничение: Контейнеры разделяют ядро хостовой ОС, что обеспечивает меньшую изоляцию по сравнению с виртуальными машинами. Для workloads, требующих строгой безопасности или специфичного ядра, VMs предпочтительнее.