Перейти к содержанию

Docker, LXC или виртуальная машина на сервере

Выберите VM для отдельного ядра или отдельной границы изоляции, LXC для системной среды Linux и Docker для приложения с готовым образом и вынесенными данными.

Обновлено Редакция GAW

У Docker и LXC на Linux общее ядро с хостом, на котором запущен соответствующий движок. В VM загружается своё ядро, а гипервизор предоставляет гостю виртуальные устройства. Контейнеры приложения можно запускать внутри VM.

Коротко

  • VM подходит для другого ядра и даёт отдельную границу между гостем и хостом.
  • LXC удобен для Linux-среды с пакетами и системными службами.
  • Docker описывает приложение через образы, параметры запуска и отдельные данные.
  • Проброс устройств и каталогов меняет границу доступа и состав резервной копии.
Дерево выбора между VM, LXC и DockerДругое ядро или отдельная граница изоляции: VM. Иначе для среды с системными службами выбирают LXC, для готового образа приложения — Docker. В Proxmox Docker запускают внутри VM.ДаНетДаНет, есть образДругое ядро / граница VM?Нужны системные службы?Виртуальная машинаLXCDocker
Для Docker Compose на Proxmox можно выделить Linux VM.

Сравнение

КритерийVMLXC в ProxmoxDocker на Linux
ЯдроГостевоеLinux-ядро узла ProxmoxЯдро Linux-хоста Docker
УстройстваВиртуальные устройства, отдельная настройка passthroughРазрешения и отображение устройств хостаЯвная выдача доступа к нужным устройствам
ОбновлениеОС и приложения внутри гостяПакеты внутри LXC, ядро обновляет хостНовый образ и пересоздание контейнера, миграции данных отдельно
КопированиеДиски и конфигурация гостя с учётом исключенийRootfs и включённые управляемые тома, bind mounts отдельноCompose, настройки и секреты, данные томов или выгрузка БД

Выбор на трёх примерах

  1. Для Windows или эксперимента с другим ядром создайте VM. Для PCIe-устройства заранее проверьте IOMMU, группы и совместимость хоста и гостя. Виртуальный адаптер и passthrough решают разные задачи.
  2. Для отдельной Linux-среды с несколькими системными службами подойдёт непривилегированный LXC. Если нужно смонтировать каталог хоста, заранее проверьте отображение UID/GID и отдельно включите каталог в план копирования.
  3. Для приложения с опубликованным образом и описанными томами начните с Docker Compose. В Proxmox разместите Docker внутри Linux VM. Доступ к сокету Docker, привилегированный режим и широкие bind mounts дают приложению дополнительные возможности на хосте Docker. Для каждого такого доступа проверьте необходимость.

Перед переносом сервиса ответьте на один практический вопрос. Сможете ли вы развернуть его на чистом хосте из конфигурации и копии данных? Проверьте запуск, права на файлы и поведение после обновления в тестовой среде.

Частые вопросы

Можно ли запустить Windows в LXC?

LXC использует ядро Linux хоста. Для полноценной гостевой Windows на Proxmox выберите виртуальную машину.

Где запускать Docker Compose на Proxmox?

Обычная схема для лаборатории — отдельная Linux VM с Docker Engine. У Proxmox есть поддержка OCI в LXC как технологическое превью, со своим жизненным циклом.

Что проверить перед копированием LXC?

Определите, какие пути находятся в rootfs, какие тома включены в backup и какие каталоги смонтированы с хоста. Содержимое bind mounts копируют отдельно.

Источники

  1. Proxmox VE. Containers — Ядро, непривилегированные контейнеры, mounts и OCI
  2. Proxmox VE. QEMU/KVM Virtual Machines
  3. Docker Engine Security
  4. Docker. Volumes
Страница помогла?

Нашли ошибку? ·