Вопрос на собеседовании · DevOps-инженер
Чем контейнер отличается от виртуальной машины?
Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.
Виртуальная машина эмулирует отдельную вычислительную среду и запускает собственную гостевую ОС с ядром. Контейнер изолирует процессы средствами ядра хоста — namespaces и cgroups — и обычно включает приложение с пользовательскими библиотеками, но не отдельное ядро.
Поэтому контейнеры обычно быстрее запускаются и плотнее размещаются, а виртуальные машины дают более сильную границу изоляции и могут запускать другую ОС. На практике эти подходы часто сочетаются: контейнеры работают внутри виртуальных машин облака.
01 · Структура ответа
Что важно сказать интервьюеру
Раскройте тезисы, которые относятся именно к этому вопросу, и поясните их на собственном примере:
02 · Пример
Как объяснить на практике
Kubernetes-кластер в облаке может состоять из VM-узлов, на каждом из которых runtime запускает множество контейнеров. VM задаёт инфраструктурную границу, а контейнер обеспечивает переносимую упаковку и изоляцию процесса приложения.
Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.
03 · Ошибки
Чего избегать в ответе
04 · Углубление
Что могут спросить следом
- Что делают namespaces и cgroups?
- Что входит в container image?
- Почему контейнеры обычно запускаются быстрее?
05 · Проверка фактов
Первоисточники по теме
Ссылки ниже помогают проверить понятия, методы и ограничения по теме. Они не являются доказательством того, что этот вопрос задают на каждом собеседовании.
- Docker Docs: What is a container? — Изоляция контейнера и отличие от виртуальной машины.
Практика ответа
Ответьте вслух, а не про себя
Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с подсказкой.
Mira