NPV-AM

← Все статьи

LXC контейнеры vs Docker: когда что использовать

13 мар 2026 · 10 мин чтения

Фундаментальные различия

LXC и Docker работают на разных уровнях абстракции. Docker упаковывает один процесс в изолированный образ, созданный для микро-сервисов. LXC предоставляет полноценную систему с init-процессом, несколькими сервисами и файловой системой, аналогичной виртуальной машине, но с производительностью контейнера.

Архитектура

Docker использует namespaces и cgroups, добавляя overlay filesystem для образов. Каждый контейнер — это один процесс. LXC также использует namespaces и cgroups, но предоставляет полную файловую систему с init-системой (systemd или OpenRC).

# Docker: один процесс на контейнер
docker run -d nginx:alpine

# LXC: полноценная система
lxc launch ubuntu:22.04 my-server
lxc exec my-server bash

Когда использовать LXC

Когда использовать Docker

Пример: web-сервер на LXC

# Создание контейнера
lxc launch ubuntu:22.04 web-server

# Установка пакетов
lxc exec web-server -- apt update
lxc exec web-server -- apt install -y nginx php8.1-fpm mysql-server

# Настройка сети
lxc config device add web-server eth0 nic \
  name=eth0 nictype=bridged parent=lxdbr0

# Запуск сервисов
lxc exec web-server -- systemctl enable nginx mysql
lxc exec web-server -- systemctl start nginx mysql

# Просмотр логов
lxc exec web-server -- journalctl -u nginx -f

Пример: то же на Docker Compose

# docker-compose.yml
version: '3.8'
services:
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./app:/var/www/html
    depends_on:
      - php

  php:
    image: php:8.1-fpm
    volumes:
      - ./app:/var/www/html

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:

Производительность

На реальных тестах:

LXC идеален как замена виртуальным машинам для dev-окружений и серверов, где нужна полная Linux-среда. Docker лучше подходит для production-сервисов с четкой изоляцией процессов.

Proxmox + LXC

Proxmox VE использует LXC как основу для контейнеров. Это позволяет создавать контейнеры с минимальными накладными расходами и управлять ими через веб-интерфейс:

# Proxmox API: создание контейнера
pvesh create /nodes/pve/lxc \
  --ostemplate local:vztmpl/ubuntu-22.04-standard_22.04-1_amd64.tar.zst \
  --hostname web-server \
  --memory 512 \
  --cores 2 \
  --net0 name=eth0,bridge=vmbr0,ip=10.0.0.10/24

Сетевые особенности

Вывод

Не противопоставляйте LXC и Docker — они решают разные задачи. Docker для микро-сервисов и CI/CD. LXC для замены VM и full-stack development. Профессиональный DevOps инженер знает оба инструмента и применяет их там, где они наиболее эффективны.