Инструменты пользователя

Инструменты сайта


shpargalka_lxc

Это старая версия документа!


Базовая информация

Можно создавать контейнеры двух видов:

  1. привилегированные - доступно выполнение команд LXC от имени root;
  2. непривилегированные - доступно выполнение команд LXC от имени обычного пользователя. Такие контейнеры более ограничены, например они не могут создавать файлы устройств или монтировать файловые системы на блочных устройствах.

Основные команды

Команда Значение
lxc-attach Подключение к контейнеру - запускает bash от имени root, минуя логин. Выход по exit
lxc-autostart Запуск контейнеров, в конфиге которых включена автозагрузка
lxc-cgroup Управление cgroup-группами контейнер
lxc-checkconfig
lxc-clone
lxc-config
lxc-console Подключение к консоли контейнера. Выйти, отключиться от консоли можно комбинацией клавиш ctrl-a q.
lxc-create Создание нового контейнера
lxc-destroy Удалить указанный контейнер
lxc-device Проброс устройств в контейнер
lxc-execute Выполнить указанную команду внутри контейнера
lxc-freeze Заморозить все процессы указанного контейнера
lxc-info Показать информацию о заданном контейнере
lxc-ls Показать список контейнеров в системе
lxc-monitor Мониторить состояние контейнеров
lxc-snapshot
lxc-start Запуск существующего контейнера
lxc-start-ephemeral
lxc-stop Остановить указанный контейнер
lxc-unfreeze Разморозить все процессы указанного контейнера
lxc-unshare
lxc-usernsexec
lxc-wait Ждать определённого состояния контейнера; завершится, когда состояние достигнут
lxterm


lxc-attach

Опции Значение
-n, --name=NAME Указать имя контейнера.
-e, --elevated-privileges=PRIVILEGES Не сбрасывать привилегии.
-a, --arch=ARCH Use ARCH for program instead of container's ownarchitecture.
-s, --namespaces=FLAGS Указать пространства имён, к которым нужно подсоединиться. Разрешены MOUNT, PID, UTSNAME, IPC, USER и NETWORK.
-R, --remount-sys-proc Remount /sys and /proc if not attaching to the mount namespace when using -s in order to properly reflect the correct namespace context. See the lxc-attach(1) manual page for details.
--clear-env Clear all environment variables before attaching. The attached shell/program will start with only container=lxc set.
--keep-env Keep all current environment variables. This is the current default behaviour, but is likely to change in the future.
-v, --set-var Set an additional variable that is seen by the attached program in the container. May be specified multiple times.
--keep-var Keep an additional environment variable. Only applicable if –clear-env is specified. May be used multiple times.
-o, --logfile=FILE Output log to FILE instead of stderr
-l, --logpriority=LEVEL Set log priority to LEVEL
-q, --quiet Don't produce any output
-P, --lxcpath=PATH Использовать нестандартный путь к контейнеру.
-?, --help Give this help list
--usage Give a short usage message
--version Print the version number
  • Подключиться к контейнеру test-ubuntu:
lxc-attach -n test-ubuntu
  • Выполнить команду top в контейнере test-ubuntu:
lxc-attach -n test-ubuntu -- top


lxc-autostart

Опция Значение
-k, --kill kill the containers instead of starting them
-L, --list list all affected containers and wait delay
-r, --reboot reboot the containers instead of starting them
-s, --shutdown shutdown the containers instead of starting them
-a, --all Старт контейнеров, имеющих опцию автозапуска
-g, --groups Список контейнеров, состоящих в указанной группе
-t, --timeout=T wait T seconds before hard-stopping
-o, --logfile=FILE Output log to FILE instead of stderr
-l, --logpriority=LEVEL Set log priority to LEVEL
-q, --quiet Don't produce any output
-P, --lxcpath=PATH Use specified container path
-?, --help Give this help list
--usage Give a short usage message
--version Print the version number

Каждый контейнер описывается своим конфигурационным файлом в /var/lib/lxc/имя-контейнера/config.
Значения, связанные с автостартом контейнера:

  • lxc.start.auto = 0 (выключено) или 1 (включено)
  • lxc.start.delay = 0 (задержка в секундах до автостарта контейнера)
  • lxc.start.order = 0 (приоритет контейнера, чем выше значение, тем раньше стартует контейнер)
  • lxc.group = group1,group2,group3,… (членами каких групп является контейнер)

Когда стартует хост-машина, init скрипт lxc-autostart запустит все контейнеры, у которых НЕ указана группа, в правильном порядке и через определённое ими время, но в конфиге контейнера указано lxc.start.auto=1. Источник.

  • Запустить все контейнеры, имеющие lxc.start.auto=1:
lxc-autostart -a
  • Запустить все контейнеры, имеющие lxc.start.auto=1 и принадлежащие группе ubuntu:
lxc-autostart -r -g ubuntu


lxc-create

Создать контейнер с именем test_ubuntu из образа ubuntu:

lxc-create -t ubuntu -n test-ubuntu
  • Создать контейнер с именем test-centos из образа centos для процессора архитектуры i386:
# Если в системе не установлен пакетный менеджер yum, то необходимо его установить:
apt-get install yum
# Затем создать контейнер:
lxc-create -t centos -n test-centos -- -a i386


lxc-freeze

  • Заморозить все процессы в контейнере:
lxc-freeze -n имя_контейнера

В результате процессы не тратят такты, отведенные им планировщиком, но продолжают существовать и потреблять ОЗУ.



lxc-device

Опции Значение
add Добавить устройство.
-h, --help Показать окно справки.
-n CONTAINER Имя контейнера, в который необходимо пробросить устройство
-P PATH, --lxcpath PATH Указать нестандартный путь к контейнеру
--version Показать версию программы и выйти
  • Добавить (mknod) /dev/ttyS0 в контейнер test-ubuntu с тем же типом, старшим (major), младшим (minor) числами под именем /dev/ttyUSB0 и добавить разрешающие записи cgroup:
lxc-device add -n test-ubuntu /dev/ttyUSB0 /dev/ttyS0


lxc-info

  • Подключение к контейнеру по SSH:
# Вывод подробной информации о контейнере, включая IP:
lxc-info -n test-ubuntu
 
Name:           test-ubuntu
State:          RUNNING
PID:            18382
IP:             10.0.3.115
CPU use:        0.40 seconds
BlkIO use:      24.00 KiB
Memory use:     2.28 MiB
KMem use:       0 bytes
Link:           vethIJRP38
 TX bytes:      1.09 KiB
 RX bytes:      1.01 KiB
 Total bytes:   2.10 KiB
 
 
# Подключение к контейнеру по IP из вывода lxc-info:
ssh root@10.0.3.115


lxc-ls

Опция Значение
-h, --help Вывод справки
-l Формат вывода - один контейнер в строку
-P PATH, --lxcpath PATH
--active Вывести список только активных контейнеров
--frozen Вывести список только замороженных контейнеров
--running Вывести список только запущенных контейнеров
--stopped Вывести список только остановленных контейнеров
-f, --fancy
-F FANCY_FORMAT, --fancy-format FANCY_FORMAT
--nesting
--version Вывести номер версии программы и выйти
  • Вывести информацию о всех созданных контейнерах:
lxc-ls -f
  • Вывести список контейнеров, которые будут автоматически запущены при старте хоста:
lxc-ls --fancy


lxc-start

  • Запустить контейнер в фоне:
lxc-start -d -n test-ubuntu


lxc-stop

  • Корректная остановка контейнера из хоста:
lxc-stop -n test-ubuntu
  • Грубое убийство контейнера из хоста:
lxc-stop -n test-ubuntu -k


lxc-unfreeze

  • Разморозить все процессы в контейнере:
lxc-unfreeze -n имя_контейнера
shpargalka_lxc.1443539285.txt.gz · Последнее изменение: 2015/09/29 00:00 (внешнее изменение)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki