PassFront
  1. PassFront
  2. База знаний
  3. Основы Docker

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

Основы Docker

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

Различия

  • VM: гипервизор виртуализует железо, внутри — полноценная гостевая ОС. Накладные расходы: гигабайты памяти и минуты на загрузку.
  • Контейнер: изоляция средствами ядра Linux — namespaces (процессы, сеть, ФС) и cgroups (лимиты CPU и памяти). Гостевой ОС нет, старт за миллисекунды.

Следствия

  • Контейнеры плотнее: на одном хосте их помещаются десятки.
  • VM изолирует сильнее: отдельное ядро — дополнительный барьер безопасности.
  • Контейнер зависит от ядра хоста: Linux-контейнер не запустится нативно на Windows без слоя виртуализации.

Типичный фоллоу-ап

«Docker — это легковесная VM?» Нет: Docker использует namespaces и cgroups, а на macOS и Windows как раз поднимает скрытую Linux-VM, чтобы предоставить ядро.

Коротко для собеседования

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

Другие вопросы раздела