Ответ
Docker — это платформа для контейнеризации приложений. Она изолирует приложения и их зависимости в легковесных, переносимых контейнерах, используя возможности ядра операционной системы (namespaces и cgroups).
Ключевые компоненты:
- Docker Engine: Демон (
dockerd), который создает и управляет контейнерами. - Образы (Images): Неизменяемые шаблоны, содержащие код, зависимости и конфигурацию. Например,
openjdk:17. - Контейнеры: Запущенные экземпляры образов.
- Dockerfile: Текстовый файл с инструкциями для сборки образа.
- Docker Hub: Реестр для хранения и обмена образами.
Пример запуска контейнера:
docker run -it --rm openjdk:17 bash
Как это работает:
- Docker Engine извлекает образ из реестра (если его нет локально).
- На основе образа создается контейнер — изолированное пространство процессов с собственной файловой системой и сетевым стеком.
- Контейнер запускается в качестве процесса на хосте, но изолирован от других контейнеров и основной системы.
Преимущества перед виртуальными машинами:
- Легковесность: Контейнеры используют ядро хоста, а не свою ОС, что экономит ресурсы.
- Скорость: Контейнеры запускаются за секунды.
- Переносимость: Образ гарантирует идентичное поведение на любом хосте с Docker.
- Эффективность: На одном хосте можно запустить гораздо больше контейнеров, чем виртуальных машин.