====== Основные команды 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 имя_контейнера