Ответ
Популярность Docker обусловлена решением фундаментальных проблем разработки и доставки ПО через стандартизированную, легковесную контейнеризацию.
Основные преимущества:
-
Устранение несовместимости сред ("работает на моей машине")
- Контейнер включает приложение со всеми зависимостями (библиотеки, runtime, системные инструменты).
- Один и тот же образ гарантированно работает на любой системе с Docker (от разработки до продакшена).
-
Эффективность и скорость
- Легковесность: Контейнеры делят ядро ОС, потребляя меньше ресурсов, чем VM.
- Быстрый запуск: Запуск процесса за секунды vs загрузка всей ОС в VM.
- Высокая плотность: На одном хосте можно запустить больше контейнеров, чем VM.
-
Стандартизация и экосистема
- Простой
Dockerfileкак стандарт сборки. - Централизованный реестр образов (Docker Hub).
- Интеграция с CI/CD и оркестраторами (Kubernetes).
- Простой
Практический пример:
# Стандартный, переносимый способ упаковки приложения
FROM openjdk:11-jre-slim
COPY target/my-api.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
Собранный образ можно запустить везде одной командой: docker run -p 8080:8080 my-api:latest.