Вопрос с собеседования · DevOps

Чем контейнер отличается от виртуальной машины?

JuniorDocker и контейнерыDocker
Ещё спрашивают так:
  • Что такое namespaces и cgroups?
Коротко

Виртуальная машина эмулирует оборудование и запускает собственное ядро ОС поверх гипервизора. Контейнер — обычный процесс хоста, изолированный механизмами общего ядра: namespaces (свои PID, сеть, файловая система, пользователи) и cgroups (лимиты CPU и памяти). Контейнер стартует за доли секунды и весит мегабайты; изоляция слабее, чем у ВМ.

  • Ядро общее — контейнер с Linux-ядром не запустить на Windows без ВМ
  • Уязвимость ядра затрагивает все контейнеры хоста
  • Для мультитенантности со строгой изоляцией — ВМ или песочницы (gVisor, Firecracker)

А ещё Образ — шаблон файловой системы, контейнер — запущенный процесс из образа

Подробно

Namespaces:

  • pid — свой PID 1 и дерево процессов;
  • net — свои интерфейсы, IP, порты;
  • mnt — своя файловая система (корень из образа);
  • uts — имя хоста;
  • ipc, user — разделяемая память, отображение пользователей.

Cgroups ограничивают и учитывают ресурсы: CPU, память, ввод-вывод, число процессов. Отсюда OOMKilled в контейнере при свободной памяти хоста.

Сравнение:

виртуальная машинаконтейнер
ядросвоёобщее с хостом
запускдесятки секунддоли секунды
размергигабайтымегабайты
изоляциясильнаяслабее
плотностьдесятки на хостсотни на хост

На практике их сочетают: контейнеры запускают внутри виртуальных машин облака.

Что хотят услышать

  • Общее ядро против собственного.
  • Namespaces и cgroups.
  • Компромисс скорости и изоляции.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓ВМ — со своим ядром, контейнер — процесс на общем ядре хоста
  • ✗Контейнер запускает своё ядро ОС поверх хоста, а ВМ использует ядро хоста напрямую
  • ✗ВМ стартует быстрее контейнера, потому что ядро уже загружено
  • ✗Изоляция контейнера сильнее, чем у ВМ, — за счёт namespaces и cgroups

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования