LXC-контейнеры (Linux Containers) в Proxmox используют ядро хост-системы, что делает их значительно легче и быстрее, чем полные VM. Контейнер запускается за секунды и потребляет минимум ресурсов при том же уровне изоляции для большинства задач.
VM vs LXC: когда что использовать
| Критерий | VM (KVM) | LXC-контейнер |
|---|---|---|
| Время запуска | 30–60 секунд | 1–3 секунды |
| Потребление RAM | Больше (собственное ядро) | Меньше (общее ядро) |
| Изоляция | Полная (аппаратная) | Частичная (пространства имён) |
| ОС | Любая (Windows, Linux, BSD) | Только Linux |
| Производительность I/O | Небольшие потери | Почти нативная |
| Поддержка Docker | Полная | Ограниченная (нужен nesting) |
Шаг 1: Загрузка шаблона контейнера
# Обновить список шаблонов
pveam update
# Показать доступные шаблоны
pveam available | grep -E "debian|ubuntu|alpine"
# Скачать шаблон
pveam download local debian-12-standard_12.7-1_amd64.tar.zst
Или через веб-интерфейс: local → CT Templates → Templates → выбрать и скачать.
Шаг 2: Создание контейнера
# Создать непривилегированный контейнер с ID 200
pct create 200 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst --hostname mycontainer --rootfs local-lvm:8 --memory 512 --swap 512 --cores 1 --net0 name=eth0,bridge=vmbr0,ip=dhcp --password SecurePass123 --unprivileged 1 --onboot 1
# Запустить контейнер
pct start 200
# Открыть консоль
pct enter 200
Привилегированные vs непривилегированные контейнеры
Рекомендация: Всегда используйте
--unprivileged 1 (по умолчанию). Непривилегированные контейнеры более безопасны — процессы внутри работают от UID/GID, смещённых на 100000, что исключает эскалацию привилегий на хост.
Привилегированные контейнеры нужны только для специфических задач: работа с устройствами, NFS-монтирование, некоторые сетевые функции.
Монтирование bind mounts
# Примонтировать директорию хоста в контейнер
pct set 200 --mp0 /data/shared,mp=/mnt/shared,backup=0
# Примонтировать через конфигурационный файл
cat /etc/pve/lxc/200.conf
# mp0: /data/shared,mp=/mnt/shared
Включение Docker в LXC
Для запуска Docker внутри LXC-контейнера нужны дополнительные настройки:
# Добавить в /etc/pve/lxc/200.conf на хосте Proxmox
features: keyctl=1,nesting=1
# Перезапустить контейнер
pct stop 200 && pct start 200
# Внутри контейнера установить Docker
curl -fsSL https://get.docker.com | bash
Безопасность: Docker в LXC с
nesting=1 снижает изоляцию. Для продакшн-нагрузок рекомендуется Docker внутри полной VM.
Полезные команды pct
# Список контейнеров
pct list
# Статус контейнера
pct status 200
# Остановить
pct stop 200
# Снапшот
pct snapshot 200 backup1
# Клонировать контейнер
pct clone 200 201 --full --hostname container2
# Удалить
pct destroy 200