Docker в Proxmox: что лучше, LXC или виртуальная машина?

Запуск Docker в инфраструктуре Proxmox помогает эффективно использовать ресурсы, гибко развертывать приложения и ускорять запуск сервисов. В статье сравниваются два способа: установка Docker внутри контейнера LXC и в отдельной виртуальной машине. Рассматриваются настройка, ограничения и защита данных.

download-icon
Скачайте Бесплатно
Для ВМ, ОС, БД, файлов, NAS и т.д.
mavis-yang

Обновлено Mavis Yang 2026/10/20

Оглавление
  • Зачем использовать Docker в Proxmox?

  • Docker в Proxmox: сравнение LXC и виртуальной машины

  • Как установить Docker в контейнере LXC на Proxmox?

  • Как запустить Docker в виртуальной машине Proxmox?

  • Как защитить виртуальные машины Proxmox с помощью Vinchin Backup & Recovery?

  • Часто задаваемые вопросы о Docker в Proxmox

  • Заключение

Многие компании используют контейнеризацию, чтобы гибко развертывать приложения и управлять ими. Один из вариантов состоит в запуске Docker в инфраструктуре Proxmox VE. Ниже сравниваются два способа: установка Docker внутри контейнера LXC и установка Docker в отдельной виртуальной машине. Речь не идет об установке Docker непосредственно на хост Proxmox VE.

Зачем использовать Docker в Proxmox?

Docker представляет собой платформу контейнеризации, которая позволяет упаковывать приложения и их зависимости в переносимые контейнеры. Это упрощает развертывание и управление приложениями в совместимых средах.

Запуск Docker в инфраструктуре Proxmox дает несколько преимуществ:

1. Совместное использование ресурсов и эффективность. На одном физическом сервере можно запускать несколько Docker-контейнеров, распределяя доступные ресурсы между приложениями.

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

3. Изоляция приложений. Контейнеры разделяют среды выполнения приложений и их зависимости, уменьшая вероятность конфликтов. Однако контейнерная изоляция не равнозначна изоляции виртуальной машины с собственным ядром.

Рассмотрим особенности обоих способов запуска Docker и порядок их настройки.

Docker в Proxmox: сравнение LXC и виртуальной машины

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

КритерийDocker в LXCDocker в виртуальной машине
ПроизводительностьВысокая, с небольшими накладными расходамиВысокая; зависит от настроек VM и нагрузки
Потребление ресурсовОбычно нижеОбычно выше из-за отдельной гостевой ОС
ИзоляцияОбщее ядро с хостомОтдельное ядро гостевой ОС
БезопасностьЗависит от привилегий и настроек вложенных контейнеровБолее сильная граница изоляции от хоста
Скорость запускаБыстрый запуск среды LXCЗагрузка гостевой ОС обычно занимает больше времени
СовместимостьВозможны ограничения ядра, хранилища и разрешенийОбычная поддерживаемая среда Docker внутри гостевой ОС
Резервное копированиеНужно проверять охват точек монтирования и данных приложенийМожно защищать VM целиком; внешние данные требуют отдельной проверки
Подходящие сценарииДомашние лаборатории и легкие сервисы после тестированияПредпочтительный вариант для рабочих нагрузок

Что выбрать? Для большинства рабочих сред разумно начать с отдельной VM. LXC имеет смысл рассматривать, если важна экономия ресурсов и вы готовы проверить совместимость, ограничения и восстановление приложений.

Как установить Docker в контейнере LXC на Proxmox?

Способ 1 предполагает создание системного контейнера LXC в Proxmox VE и установку Docker внутри него. Приложения затем запускаются как Docker-контейнеры внутри этой среды LXC.

LXC обеспечивает легковесную виртуализацию Linux-среды, а Docker управляет контейнерами приложений. Это разные уровни контейнеризации, и вложенный запуск требует дополнительных настроек. В следующих примерах используется новый непривилегированный контейнер Ubuntu 24.04 LTS. Совместимость необходимо проверить для конкретных версий Proxmox VE, ядра и Docker.

Шаг 1. Скачайте шаблон операционной системы

В интерфейсе Proxmox VE выберите хранилище, в котором разрешено хранение шаблонов контейнеров. Откройте CT Templates > Templates, выберите подходящий шаблон Ubuntu и скачайте его. Для другой ОС потребуются соответствующие ей команды установки Docker.

Выбор шаблона операционной системы для LXC в Proxmox VE

После загрузки шаблон появится в списке хранилища:

Шаблон операционной системы в списке CT Templates Proxmox VE

Шаг 2. Создайте контейнер

1. Нажмите Create CT. Укажите Hostname и пароль root внутри контейнера, оставьте включенным параметр Unprivileged container, выберите загруженный шаблон и настройте размер диска, CPU и Memory.

Настройка имени и основных параметров контейнера LXC в Proxmox VE

2. В разделе Network выберите сетевой мост и способ адресации. Если в сети работает DHCP, его можно использовать для IPv4. Настройки IPv6 выбирайте в соответствии с вашей сетью; включать DHCP для обоих протоколов обязательно не требуется. Статический адрес также допустим.

Выбор сетевого моста и IP-настроек контейнера LXC

3. В разделе DNS задайте серверы имен либо используйте настройки, наследуемые от хоста, если они подходят вашей сети. Нажмите Finish.

Шаг 3. Настройте функции LXC и запустите контейнер

1. Пока новый контейнер остановлен, выберите его в интерфейсе Proxmox VE и откройте Options > Features > Edit.

Открытие настроек Features для контейнера LXC в Proxmox VE

2. Для вложенного запуска включите Nesting, а для непривилегированного контейнера также keyctl, затем нажмите OK. На исходной иллюстрации выделен keyctl, но проверять нужно оба параметра. Включение этих функций меняет доступные контейнеру возможности и само по себе не гарантирует совместимость любой версии Docker.

Окно функций LXC: проверьте параметры Nesting и keyctl

3. Запустите контейнер. Не переводите его в привилегированный режим и не отключайте защитные профили автоматически только ради устранения ошибки установки; сначала проверьте причину или используйте VM.

Шаг 4. Обновите систему и установите Docker

1. Выберите контейнер, нажмите Start и откройте Console. Войдите как root с паролем, заданным при создании CT. Приглашение вида «docker login:» может содержать имя хоста контейнера; это не команда входа в Docker Hub.

Все следующие команды выполняются внутри контейнера Ubuntu, а не в Shell хоста Proxmox VE.

2. Обновите список пакетов и установленные пакеты. Просмотрите предложенные изменения перед подтверждением:

apt update
apt upgrade

Пример обновления системы через консоль контейнера LXC

3. Установите curl и сертификаты доверенных центров сертификации:

apt install -y curl ca-certificates

4. Для лабораторного примера можно использовать официальный установочный скрипт Docker. Сначала скачайте его в файл:

curl -fsSL https://get.docker.com -o get-docker.sh

Просмотрите скрипт в текстовом редакторе и выведите планируемые действия без выполнения установки:

sh get-docker.sh --dry-run

После проверки выполните установку:

sh get-docker.sh

Этот быстрый способ предназначен для тестирования и разработки. Для рабочих сред используйте установку из официального APT-репозитория Docker для Ubuntu. Не используйте установочный скрипт как универсальный способ обновления существующей установки.

5. Проверьте состояние службы и запуск тестового контейнера:

systemctl status docker --no-pager
docker run --rm hello-world

Если Docker не запускается или появляются ошибки разрешений, монтирования либо хранения данных, проверьте настройки LXC и совместимость версий. Успешный запуск hello-world подтверждает базовую работоспособность, но не заменяет проверку ваших приложений и их восстановления.

Как запустить Docker в виртуальной машине Proxmox?

Способ 2 предполагает установку Docker в Linux VM. Сначала скачайте ISO-образ ОС, создайте виртуальную машину в Proxmox VE и установите гостевую систему. Затем установите Docker внутри нее. В отличие от LXC, этот вариант использует отдельное ядро гостевой ОС и обеспечивает более сильную изоляцию от хоста.

Шаг 1. Скачайте ISO-образ операционной системы

Скачайте ISO-образ поддерживаемой Linux-системы с официального сайта дистрибутива и загрузите его в хранилище ISO Images Proxmox VE. Для единого примера можно использовать Ubuntu Server 24.04 LTS.

Шаг 2. Создайте виртуальную машину

В Proxmox VE нажмите Create VM, укажите имя машины и в разделе OS выберите хранилище и загруженный ISO-образ. Настройте System, Disks, CPU, Memory и Network, затем нажмите Finish.

Мастер создания виртуальной машины в Proxmox VE

Шаг 3. Установите операционную систему

Выберите созданную VM, откройте Console и нажмите Start Now либо Start. Следуйте подсказкам установщика выбранной ОС и настройте сетевой доступ.

Запуск виртуальной машины и установка Linux через консоль Proxmox VE

Шаг 4. Установите Docker

Войдите в гостевую ОС. Для рабочей VM настройте официальный репозиторий Docker по инструкции для выбранного дистрибутива и установите Docker Engine. Не требуется включать аппаратную вложенную виртуализацию только для обычного запуска Linux-контейнеров Docker внутри Linux VM.

Для лабораторной проверки можно использовать тот же быстрый способ, что и выше. Следующие команды выполняются с правами root внутри гостевой Ubuntu, не на хосте Proxmox VE. Если вы вошли как обычный пользователь, сначала перейдите в разрешенный административный сеанс или используйте sudo для отдельных команд.

apt update
apt install -y curl ca-certificates
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh --dry-run

Просмотрите загруженный файл и вывод предварительной проверки. Затем установите Docker и проверьте его работу:

sh get-docker.sh
systemctl status docker --no-pager
docker run --rm hello-world

Скрипт установки не предназначен для рабочих развертываний. Для них используйте официальный репозиторий и заранее проверьте порядок обновления пакетов.

Как защитить виртуальные машины Proxmox с помощью Vinchin Backup & Recovery?

После установки Docker в VM необходимо позаботиться о резервном копировании ОС, конфигурации и данных приложений. Защита виртуальной машины помогает восстановить среду после сбоя, однако отдельно проверьте, где размещаются постоянные данные Docker и какие диски входят в задание резервного копирования.

Vinchin Backup & Recovery представляет собой решение для резервного копирования Proxmox, VMware, Hyper-V, XenServer, XCP-ng, oVirt, RHV и других виртуальных сред. Оно позволяет создавать резервные копии ВМ целиком без установки агента в каждую гостевую ОС. Для Proxmox настройка компонентов на узлах зависит от используемого способа передачи данных и версии продукта.

Vinchin также поддерживает мгновенное восстановление ВМ для сокращения простоев и V2V-миграцию между поддерживаемыми платформами виртуализации. При переносе проверяйте совместимость гостевой ОС, устройств и целевой платформы.

Описанная ниже процедура относится к виртуальным машинам Proxmox, а не автоматически к любому контейнеру LXC. Данные на внешних томах и bind mounts нужно учитывать отдельно. Для LXC также проверяйте состав копии: содержимое bind mounts не включается в обычную копию vzdump. Для баз данных внутри Docker предусмотрите согласованное резервное копирование средствами приложения.

Основной процесс создания задания в Vinchin состоит из четырех шагов. Названия разделов интерфейса могут различаться между версиями продукта.

1. Откройте раздел резервного копирования ВМ и выберите нужные виртуальные машины на хосте. В версии интерфейса на скриншоте используется путь VM Backup > Backup.

Выбор виртуальных машин Proxmox для резервного копирования в Vinchin

2. Выберите место хранения копии: укажите Target Node и Target Storage.

Настройка целевого узла и хранилища резервных копий Proxmox

3. Настройте стратегии: временные окна, режим и расписание резервного копирования, а также необходимые политики хранения.

Настройка режима, расписания и стратегий резервного копирования ВМ Proxmox

4. Проверьте параметры, отправьте задание и отслеживайте его выполнение.

Проверка параметров и отправка задания резервного копирования Proxmox

Vinchin предлагает бесплатную пробную версию на 60 дней, чтобы вы могли оценить возможности продукта в своей среде. Для получения дополнительной информации свяжитесь с отделом продаж Vinchin или найдите местного партнера.

Часто задаваемые вопросы о Docker в Proxmox

1. Как защитить Docker-контейнеры в Proxmox?

Регулярно обновляйте ОС и Docker, ограничивайте права доступа, разделяйте сети и открывайте только необходимые порты приложений. Контролируйте доступ к Docker и настройкам среды, используйте мониторинг и проверяйте резервное копирование постоянных данных.

2. Как отслеживать состояние Docker-контейнеров и управлять ими?

Для мониторинга и управления можно использовать Docker CLI и дополнительные платформы, например Portainer. Они помогают просматривать состояние контейнеров, журналы и показатели ресурсов. Proxmox управляет внешней VM или LXC, а отдельные Docker-контейнеры администрируются на уровне Docker.

3. Может ли Docker работать внутри непривилегированного LXC?

Такой запуск возможен в определенных конфигурациях, но обычно требует включения nesting и keyctl, а также проверки совместимости ядра, хранилища и ограничений безопасности. Это не гарантия поддержки любой комбинации версий. Для более предсказуемой изоляции и эксплуатации используйте отдельную VM.

4. Влияет ли Docker на производительность Proxmox?

Накладные расходы Docker обычно невелики. Основное влияние оказывают сами приложения, выделенные CPU и память, а также сеть и хранилище. При запуске в VM дополнительно учитываются ресурсы гостевой ОС, а при запуске в LXC важны ограничения совместно используемого ядра.

Заключение

Запуск Docker в инфраструктуре Proxmox помогает совместно использовать ресурсы, гибко развертывать приложения и ускорять запуск сервисов. Доступны два подхода: установка Docker внутри LXC или внутри отдельной VM. LXC обычно экономнее по ресурсам, но требует проверки вложенной контейнеризации. Для большинства рабочих сред предпочтительнее VM с собственным ядром и более сильной изоляцией. Vinchin Backup & Recovery помогает защитить виртуальные машины Proxmox, а постоянные данные приложений нужно включать в проверенную стратегию резервного копирования и восстановления.

поделиться:

Категории: Бэкап ВМ