====== Основные команды 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**. [[http://vasilisc.com/lxc-1-0-second-container | Источник.]]\\ \\
* //Запустить все контейнеры, имеющие **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 версии 6 для процессора архитектуры i386://
# Если в системе не установлен пакетный менеджер yum, то необходимо его установить:
apt-get install yum
# Затем создать контейнер:
lxc-create -t centos -n test-centos6 -- -R 6 -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
NAME STATE IPV4 IPV6 AUTOSTART
---------------------------------------
centos6 STOPPED - - NO
centos7 STOPPED - - NO
* //Вывести список контейнеров, которые будут автоматически запущены при старте хоста://
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 имя_контейнера