Вопрос проверяет понимание различий между контейнеризацией и виртуализацией, а также преимущества контейнеров для разработки и развертывания приложений.
Контейнеризация и виртуализация решают задачу изоляции приложений, но делают это по-разному. Виртуализация использует гипервизор для создания виртуальных машин (ВМ), каждая из которых включает полную операционную систему (ОС). Контейнеризация, напротив, работает на уровне ядра хостовой ОС, изолируя процессы с помощью пространств имен (namespaces) и контрольных групп (cgroups).
# Dockerfile
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/
EXPOSE 80
# Команда для сборки и запуска
docker build -t my-web-app .
docker run -d -p 8080:80 my-web-appЭтот пример показывает, как легко упаковать статический сайт в контейнер и запустить его. Для сравнения, создание ВМ потребовало бы установки ОС, настройки сети и копирования файлов.
Контейнеризация идеальна для микросервисов, CI/CD и разработки, где важна скорость и гибкость. Виртуализация лучше подходит для сценариев, требующих полной изоляции на уровне ядра (например, запуск разных ОС на одном сервере) или работы с устаревшими приложениями.
Вывод: Контейнеризация обеспечивает более легковесную и быструю изоляцию, что делает её предпочтительной для современных облачных приложений и DevOps-практик.