FreeBSD virtual environment management and repository

2020-10 upd: we reached the first fundraising goal and rented a server in Hetzner for development! Thank you for donating !

Внимание! Данные страницы описывают CBSD версии 13.0.x. Если вы используете более раннюю версию, рекомендуется сначала обновиться.

Обратите внимание! Данные команды поддерживают маску (wildcard) в качестве jname, например: jname='*', jname='ja*l*'

Экспорт jail

Команда jexport

			% cbsd jexport
		

Описание:

Внимание: выполнение команды допускает клетку в статусе On. Однако следует помнить (особенно если используются базы данных), что при импортировании такой клетки, с большой вероятностью можно получить проблемы в виде неконсистентных файлов, остаточных .pid файлов и тп, что может нарушить работу импортированной клетки.

Экспортировать jail в файл (*.img). В качестве аргумента jname указывается имя клетки. img-файл сохраняется в каталоге $workdir/export. Оригинальная клетка после экспорта остается без изменений.

Вы можете регулировать уровень компрессии через аргумент compress

CBSD использует для компрессии утилиту xz(1), где вы можете почитать об уровнях компрессии.

По-умолчанию используется compress=6. Если вы хотите выключить компрессию, используйте compress=0

Пример (экспортировать клетку mysqljail в $workdir/export/mysqljail.img):

			% cbsd jexport jname=mysqljail
		

Исключения для jexport

Бывают ситуации, когда в экспортированный образ вы не хотите включать ту или иную информацию из контейнера. Например, если вы делаете экспорт работающего контейнера, имеющего смонтированное дерево портов в /usr/ports.

В этом случае, вам может помочь параметр jexport_exclude, который можно указать глобально на уровне конфигурационного файла jexport.conf (скопируйте его из /usr/local/cbsd/etc/defaults в каталог ~cbsd/etc/) и откорректируйте значение jexport_exclude=

Если требуется указать альтернативные исключения для конкретного jail, скопируйте этот файл в каталог ~cbsd/jails-system/$jname/etc/. В этом случае, исключения при команде jexport будут работать только для контейнера $jname

Наконец, вы можете обходится без конфигурационного файла вовсе, перечислив все исключения через пробел в качестве параметра jexport_exclude="" при вызове утилиты jexport, например:

			cbsd jexport jname=jail1 jexport_exclude="/var/run/* /usr/ports"
		

Данные исключения не будут копировать дерево портов, поскольку этот каталог мы всегда можем смонтировать с хоста. А также, исключит наличие мертвых .pid файлов, которые могут повлиять на корректность запуска контейнера после импортирования.

Пути исключений указываются относительно корневого каталога контейнера. Так, если вы хотите мигрировать на другой сервер настройки контейнера jail1 используя jexport/jimport и при этом не хотите копировать какие-либо его данные, просто укажите / в качестве исключения:

			cbsd jexport jname=jail1 jexport_exclude="/"