В чем разница между контейнеризацией и виртуализацией

«В чем разница между контейнеризацией и виртуализацией» — вопрос из категории Devops, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Виртуализация создает полностью изолированные виртуальные машины (VM) с собственной ОС, работающие поверх гипервизора. Каждая VM эмулирует реальное железо.

Контейнеризация (Docker, Kubernetes) использует ядро хостовой ОС, изолируя процессы через namespaces и cgroups. Контейнеры легче, быстрее запускаются и потребляют меньше ресурсов, но менее изолированы, чем VM.

Пример с Docker:

# Dockerfile
FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]

Ключевые отличия:

  • Виртуализация: полная изоляция, тяжеловесность
  • Контейнеры: общее ядро, легковесность, быстрый деплой