Вопрос проверяет понимание концепции контейнеризации, её отличий от виртуализации и преимуществ для разработки и развертывания приложений.
Контейнеризация — это технология виртуализации на уровне операционной системы, которая позволяет запускать приложения в изолированных средах, называемых контейнерами. Каждый контейнер содержит приложение и все его зависимости (библиотеки, конфигурации), но использует общее ядро хостовой ОС. Это делает контейнеры значительно более легковесными по сравнению с виртуальными машинами, так как не требуется эмуляция аппаратного обеспечения и запуск отдельной гостевой ОС.
Контейнеры изолируют процессы с помощью механизмов ядра Linux, таких как cgroups (для ограничения ресурсов) и namespaces (для изоляции процессов, сети, файловой системы). Популярным инструментом для управления контейнерами является Docker, который предоставляет простой интерфейс для создания, запуска и управления контейнерами.
Создадим простой контейнер с веб-сервером Nginx:
# Dockerfile
FROM nginx:alpine
COPY ./index.html /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]Сборка и запуск:
docker build -t my-nginx .
docker run -d -p 8080:80 my-nginxТеперь приложение работает в изолированной среде и доступно на порту 8080 хоста.
Контейнеризация идеально подходит для микросервисной архитектуры, CI/CD пайплайнов и сред, где требуется быстрая масштабируемость и консистентность окружений. Она упрощает процесс разработки и эксплуатации, делая приложения более гибкими и надежными.