Команда Linux lxc

Linux 命令大全Справочник команд Linux


LXC (Linux Containers) — это технология виртуализации на уровне операционной системы, позволяющая запускать несколько изолированных сред Linux (контейнеров) в одной системе Linux. В отличие от традиционных виртуальных машин, контейнеры LXC используют общее ядро хост-системы, что делает их более лёгкими и эффективными.

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


Основные концепции LXC

Контейнер

Контейнер — это лёгкое изолированное пространство процессов с собственной файловой системой, сетевой конфигурацией и деревом процессов.

Template

Шаблон — это предопределённая конфигурация и структура файловой системы, используемые для создания контейнеров. LXC предоставляет множество шаблонов, таких как ubuntu, debian, centos и т. д.

Контрольные группы (cgroups)

Функция ядра Linux, используемая для ограничения, учёта и изоляции использования ресурсов (CPU, памяти, дискового ввода-вывода и т. д.) группами процессов.

Пространства имён

Функция ядра Linux, обеспечивающая изоляцию процессов, включая пространства имён PID, сети, точек монтирования, UTS и другие.


Синтаксис команд LXC

Базовый формат команды:

lxc [选项]  [参数]

Общие глобальные параметры:

  • --debug: Включить отладочный вывод
  • --logfile=<文件>: Указать файл журнала
  • --version: Показать информацию о версии
  • --help: Показать справочную информацию

Общие команды LXC

Управление контейнерами

Создать контейнер

lxc-create -n  -t  [-- ]

Пример:

lxc-create -n mycontainer -t ubuntu -- -r jammy

Запустить контейнер

lxc-start -n  [-d]  # -d 表示在后台运行

Остановить контейнер

lxc-stop -n 

Удалить контейнер

lxc-destroy -n 

Информация о контейнере

Список контейнеров

lxc-ls [--active]  # --active 只显示运行中的容器

Просмотреть состояние контейнера

lxc-info -n 

Просмотреть консоль контейнера

lxc-console -n 

Конфигурация контейнера

Скопировать контейнер

lxc-copy -n  -N 

Заморозить/Разморозить контейнер

Пример

lxc-freeze -n   # Заморозить
lxc-unfreeze -n   # Разморозить

Изменение конфигурации контейнера

lxc-config -n  -s =

Файл конфигурации LXC

Файл конфигурации каждого контейнера находится в:

/var/lib/lxc//config

Общие элементы конфигурации:

Пример

# Конфигурация сети
lxc.net.0.type = veth
lxc.net.0.link = lxcbr0
lxc.net.0.flags = up

# Ограничения ресурсов
lxc.cgroup.cpu.shares = 512
lxc.cgroup.memory.limit_in_bytes = 512M

Практические примеры

Пример 1: Создание и запуск контейнера Ubuntu

Пример

# Создать контейнер
lxc-create -n myubuntu -t ubuntu -- -r jammy

# Запустить контейнер
lxc-start -n myubuntu -d

# Войти в консоль контейнера
lxc-console -n myubuntu

# Выполнить команды внутри контейнера
lxc-attach -n myubuntu -- apt update

Пример 2: Ограничение ресурсов контейнера

Отредактируйте файл конфигурации контейнера/var/lib/lxc/myubuntu/config, добавьте:

Пример

lxc.cgroup.cpu.shares = 256
lxc.cgroup.memory.limit_in_bytes = 256M

Затем перезапустите контейнер, чтобы применить конфигурацию:

Пример

lxc-stop -n myubuntu
lxc-start -n myubuntu -d

Устранение типичных проблем

Проблема 1: Контейнер не запускается

  • Проверьте логи:cat /var/log/lxc/<容器名>.log
  • Убедитесь, что ядро поддерживает LXC:grep CONFIG_CGROUP /boot/config-$(uname -r)

Проблема 2: Проблемы с сетевым подключением

  • Проверьте мостовую сеть:brctl show
  • Убедитесь, что lxc-net установлен:apt install lxc-net

Проблема 3: Проблемы с правами доступа

  • Запускайте команды от имени пользователя root
  • Или добавьте пользователя в группу lxc:usermod -aG lxc <用户名>

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

Использование API LXC

LXC предоставляет привязки Python, позволяющие управлять контейнерами программно:

Пример

import lxc

container = lxc.Container("mycontainer")
if not container.defined:
    container.create("ubuntu", {"release": "jammy"})
container.start()

Снимки контейнеров

Пример

lxc-snapshot -n   # Создать снимок
lxc-snapshot -n  -r snap0  # Восстановить снимок

Миграция контейнеров

Пример

# На исходном хосте
lxc-checkpoint -n  -D /путь/к/дампу

# На целевом хосте
lxc-restore -n  -D /путь/к/дампу

Итог

LXC предоставляет легковесное решение виртуализации, которое хорошо подходит для сценариев, требующих изоляции, но не полноценных виртуальных машин. Освоив команды lxc, вы сможете эффективно создавать, управлять и поддерживать контейнеры Linux. С более глубоким пониманием LXC вы сможете дополнительно изучить его расширенные возможности, такие как пользовательская конфигурация, ограничения ресурсов и оркестрация контейнеров.


Linux 命令大全Справочник команд Linux

Другие расширения