Ответ
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 предпочтительнее.