LXC — низкоуровневый инструмент контейнеризации Linux, созданный в 2008 году. LXC создаёт изолированные пространства имён (namespaces) для процессов, файловой системы, сети и пользователей, при этом все контейнеры разделяют одно ядро хоста. Это принципиально отличает LXC от KVM-виртуализации, где каждая ВМ имеет собственное ядро.
Как работает
LXC использует два механизма ядра Linux: namespaces (изоляция видимости: процессы, сеть, файловая система, IPC, пользователи) и cgroups (контроль потребления ресурсов: CPU, RAM, I/O). Контейнер видит только свои процессы, свою файловую систему и свой сетевой стек — другие контейнеры для него невидимы.
Контейнер LXC выглядит как полноценная Linux-система с init-процессом (systemd или sysvinit), сетевым интерфейсом, пакетным менеджером. Можно запустить Ubuntu или Debian как LXC-контейнер внутри хоста с другим дистрибутивом. Нельзя запустить Windows или другое ядро — только Linux.
Управление через утилиту lxc-create, lxc-start, lxc-attach. Высокоуровневый интерфейс — LXD (демон управления контейнерами и виртуальными машинами от Canonical). Proxmox VE использует LXC как альтернативу KVM для лёгких контейнеров.
История
LXC разработан IBM и включён в Linux kernel 2.6.24 в 2008 году. Docker первоначально (2013) использовал LXC как контейнерный бэкенд, затем перешёл на собственный libcontainer/runC. LXD выпущен Canonical в 2015 году. В 2023 году Canonical передала LXD организации Linux Containers.
Ключевые отличия от похожих терминов
LXC — системные контейнеры с полной Linux-средой. Docker — контейнеры приложений: один процесс на контейнер, образы из Dockerfile. OpenVZ — аналог LXC, но коммерческий продукт от Virtuozzo с дополнительными функциями для хостинга.
LXC vs Docker
Docker — контейнеры приложений (одно приложение на контейнер). LXC — системный контейнер: полноценная ОС с systemd и несколькими сервисами. LXC-контейнер живёт неделями; Docker-контейнер — дни. Для CI/CD — Docker, для долгоживущих системных сред — LXC.
Производительность LXC
LXC работает без эмуляции железа — производительность практически идентична bare-metal. Накладные расходы: 1–3% по CPU и RAM. Эффективнее KVM для нескольких изолированных сред на одном хосте.
Безопасность LXC
LXC использует пространства имён Linux: PID, network, mount, UTS, IPC, user. Unprivileged контейнеры (UID mapping) — современный стандарт безопасности. AppArmor или SELinux добавляют обязательный контроль доступа. LXD добавляет cluster-режим и REST API.
LXC в Proxmox VE
Proxmox VE поддерживает LXC контейнеры как привилегированные и непривилегированные. Templates: предустановленные образы Debian, Ubuntu, Alpine, CentOS. Хранение: LVM, ZFS, Ceph. Для веб-серверов без Docker: LXC + Nginx + PHP-FPM = минимальные накладные расходы.
Шаблоны LXC и облачные образы
Proxmox CT Template: pveam download local ubuntu-22.04-standard. Создание контейнера: pct create 100 local:vztmpl/ubuntu-22.04.tar.zst -rootfs local-lvm:8 -memory 512 -net0 name=eth0,bridge=vmbr0. LXD Image Server: images.linuxcontainers.org — 100+ образов дистрибутивов.