Без виртуализации уже давно не обходятся многие системные администраторы и разработчики. Одни пользуются Docker, другие — контейнерами LXD, а кто-то выбирает виртуальные машины. Разберемся, чем же отличаются эти инструменты.
Виртуальные машины
Виртуальная машина (ВМ) полностью эмулирует физический сервер. Примеры виртуализации — технологии KVM от Linux или Hyper-V от Microsoft.
Специальное ПО, например, VMmanager или VMware, разделяет аппаратные ресурсы серверы и конфигурирует виртуальные машины. Их возможности ничем не отличаются от возможностей физического сервера. Вычислительные ресурсы виртуальных машин полностью изолированы друг от друга, поэтому технология очень надёжна. Для каждого ВМ используется своя ОС и драйверы. Однако, из-за этой особенности виртуальные машины потребляют довольно много ресурсов по сравнению с контейнерами. Виртуальные машины подойдут, если:
- нужно обеспечить бесперебойность бизнес-процессов;
- вам нужна среда тестировки, где можно не опасаться вредоносного ПО;
- вы используете разные операционные системы и набор ПО;
- есть необходимость эмулировать видеокарту или другое аппаратное устройство.
Контейнеры Docker
Докер использует виртуализацию на уровне операционной системы, а не аппаратного обеспечения. Это одна из самых распространенных технологий контейнеризации, стандарт в сфере разработки софта. Docker любят за возможность автоматизации, с ним можно быстро настроить среду для тестирования приложений и ускорить рабочие процессы. Однако эта технология не так надёжна, как виртуальные машины — контейнеры делят ресурсы друг с другом.
Kubernetes
Kubernetes — это инструмент для управления группами контейнеров, то есть для оркестрации. С ним можно мгновенно масштабировать Docker-контеры горизонтально или вертикально. Это полезно, если у вас непредсказуемая или сезонная потребность в вычислительных ресурсах. Kubernetes полезен, когда нужно легко и быстро разворачивать контейнеры, гибко управлять ими и автоматически масштабировать приложения. В Kubernetes несколько схем авторизации, поэтому он более безопасен в качестве среды разработки.
Контейнеры LXD
Если Docker — это виртуализация приложений, то LXD — виртуализация ОС. Это лёгкие контейнеры на базе LXC. Для пользователя они работают как виртуальная машина. По сравнению с Docker, LXD даёт большую надёжность за счёт высокой изолированности. При этом, в отличие от виртуальных машин, контейнеры LXD разворачиваются мгновенно и потребляют значительно меньше ресурсов сервера. Однако на LXD можно устанавливать только ОС Linux. Эти контейнеры подойдут для проектов, где нужна высокая степень утилизации оборудования, скорость и изолированность.