-
Зачем использовать 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 в LXC | Docker в виртуальной машине |
|---|---|---|
| Производительность | Высокая, с небольшими накладными расходами | Высокая; зависит от настроек 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.

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

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

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

3. В разделе DNS задайте серверы имен либо используйте настройки, наследуемые от хоста, если они подходят вашей сети. Нажмите Finish.
Шаг 3. Настройте функции LXC и запустите контейнер
1. Пока новый контейнер остановлен, выберите его в интерфейсе Proxmox VE и откройте Options > Features > Edit.

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

3. Запустите контейнер. Не переводите его в привилегированный режим и не отключайте защитные профили автоматически только ради устранения ошибки установки; сначала проверьте причину или используйте VM.
Шаг 4. Обновите систему и установите Docker
1. Выберите контейнер, нажмите Start и откройте Console. Войдите как root с паролем, заданным при создании CT. Приглашение вида «docker login:» может содержать имя хоста контейнера; это не команда входа в Docker Hub.
Все следующие команды выполняются внутри контейнера Ubuntu, а не в Shell хоста Proxmox VE.
2. Обновите список пакетов и установленные пакеты. Просмотрите предложенные изменения перед подтверждением:
apt update apt upgrade

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.

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

Шаг 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.

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

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

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

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, а постоянные данные приложений нужно включать в проверенную стратегию резервного копирования и восстановления.