LXC Linux Containers часть №3. Базовые действия

Оглавление

Для выполнения различных действий с контейнерами, предназначен ряд простых утилит, названия которых начинаются с префикса lxc-*.

Предназначение большинства из них, например lxc-start lxc-console lxc-consoleпонятно из названия.

Что бы создать новый контейнер, необходимо выполнить lxc-create с несколькими параметрами:

$ sudo lxc-create -t ubuntu -n 001

Параметр -t позволяет указать шаблон, а -n устанавливает уникальное имя для нового контейнера. В результате со стандартных репозиториев Ubuntu будет загружен специально подготовленный для lxc дистрибтив (~280Mb), такой же как и хост-система, и развернут новый изолированный экземпляр ОС. В качестве учетных данных для этого экземпляра необходимо использовать логин ubuntu и такой же пароль. У других шаблонов, могут использоваться другие учетные данные. Обычно, об этом сообщается в консоли по окончанию развертки контейнера. Конфигурационный файл, а так же корневой каталог со всей структурой нового контейнера будет располагаться в директории /var/lib/lxc/<имяКонтейнера>/.

После того как загрузка и установка будут завершены, можно выполнить запуск контейнера:

$ sudo lxc-start -n 001 -d

Опция -d позволяет запустить экземпляр ОС в фоне. В противном случае, мы бы автоматически попали в локальную консоль контейнера, выйти из которой можно нажав ctrl+a и затем q.

Когда контейнер работает в фоне, доступ к нему можно получить следующими способами.

Получить локальную консоль:

$ sudolxc-console -n 001

Начиная с ядра 3.8 есть возможность вызвать bash любого экземпляра ОС минуя авторизацию:

$ sudo lxc-attach -n 001

и наконец, самое полезное, подключение с помощью SSH:

$ sudo lxc-info -n 001 или lxc-ls --fancy

позволяет увидеть IP-конфигурацию контейнера:

$ sudo ssh ubuntu@IP-из-lxc-info

Остановить контейнер так же можно несколькими способами. Кроме стандартного выключения средствами ОС контейнера, можно воспользоваться корректной остановкой из хост-системы:

$ lxc-stop -n <имяКонтейнера>

или принудительным «убийством» путем добавления ключа -k к предыдущей команде.

Заморозка контейнеров

Обычно, загрузка и завершение работы контейнеров не занимает много времени. Но, если по какой-то причине это делать нельзя, то можно воспользоваться заморозкой (постановкой на паузу).

$ sudo lxc-freeze -n <имяКонтейнера>

в таком случае, все процессы указанного контейнера будут заморожены и перестанут потреблять ресурсы процессора и подсистемы ввода\вывода. Но, используемая ими память не освободится! Вывод из заморозки осуществляется противоположной командой lxc-unfreeze.