LXC вместо Docker (и тем более VM) — почему
Когда начинал, казалось, что Docker — это стандарт: compose, образы, всё из коробки. Но для домашнего сервера, где крутится 10+ сервисов, LXC на Proxmox оказался удобнее. Рассказываю, почему.
LXC — это почти VM, но легче
LXC — это изоляция на уровне ядра: у каждого контейнера свои процессы, своя сеть, свой корень. Но при этом он делит ядро и память хоста. По сути — «лёгкая VM без эмуляции железа».
В моей лабе каждый сервис — отдельный LXC: Caddy, Ollama, ComfyUI, Frigate, Kuma, Beszel, Immich. У каждого свой IP, свой systemd, свои порты. Никакого docker-compose — просто контейнер с сервисом.
Почему LXC удобнее Docker для дома
- Обновления —
pct upgrade, как обычная система. Не надо пересобирать образы - Бэкап — снапшот целиком через
pct snapshot. Один снапшот = весь сервис со всеми данными - Ресурсы — лимиты CPU/RAM/диска выставляются на лету, без рестарта
- Сеть — у каждого свой IP. Нет проброса портов и docker networks
- Железо — GPU, USB,
/devпробрасываются напрямую в контейнер - Нагрузка — LXC практически не ест ресурсов: это просто процесс на хосте
Почему LXC лучше VM
VM эмулирует железо целиком — своя ОС, своё ядро, свои драйверы. Это дорого:
- RAM — каждая VM резервирует память под свою ОС. 5 VM по 2 ГБ = 10 ГБ только на системы
- Диск — каждая VM тащит свой образ ОС (гигабайты). LXC шарит корень хоста
- Скорость — LXC стартует за секунды, VM — минуты
- Нагрузка — на одном железе можно держать 20+ LXC, а VM — 3–5
LXC даёт почти ту же изоляцию, что и VM, но без эмуляции. Для дома — золотая середина.
Когда Docker всё-таки нужен
Честно: у меня Docker тоже есть — там, где готовый образ с кучей зависимостей проще поднять через compose (Frigate, Kuma). Но как только сервис начинает «жить» — переезжает в LXC.
Вывод: для домашнего хостинга LXC — это изоляция VM, скорость процесса и простота обычного Linux. Docker — для готовых образов, VM — когда нужна своя ОС целиком. Всё остальное — LXC.