Как сделать локальный шаблон для контейнера Linux и указать на это

8

Дело в том, скажем, я хочу сделать мой контейнер Linux. Первая команда неизменно это:

sudo lxc-create -t debian -n p1

Обычно это имя Ubuntu, но я фанат Debian заменил его на debian. Конечный результат любого из них тот же, он начинает загрузку компонентов с debian.org через шаблон lxc-debian, написанный в / usr / share / lxc / templates.

$ sudo lxc-create -t debian -n debian-n
[sudo] password for shirish: 
debootstrap is /usr/sbin/debootstrap
Checking cache download in /var/cache/lxc/debian/rootfs-wheezy-amd64 ... 
Downloading debian minimal ...
I: Retrieving Release 

У меня есть локальный файл изображения debian-wheezy.iso. Есть ли способ сказать ему, чтобы вместо этого использовать этот локальный образ .iso вместо того, чтобы идти в Интернет.

Shirish
источник

Ответы:

12

предоставленный аргумент -tявляется файлом в /usr/share/lxc/templates. Глядя на lxc-debianшаблон, вызывается подпрограмма, которая выполняет загрузку download_debian(), и работа выполняется debootstrap:

    debootstrap --verbose --variant=minbase --arch=$arch \
    --include=$packages \
    "$release" "$cache/partial-$release-$arch" $MIRROR

Глядя на страницу руководства, debootstrapможно использовать локальный каталог для файлов зеркал, а не сетевой адрес

…MIRROR can be an http:// or https:// URL, a file:/// URL,
or an ssh:/// URL.

Итак, чтобы использовать ваши локальные данные, смонтируйте ваш ISO-файл на файловую систему где-нибудь; определить переменную среды MIRROR; Invoke lxc-create.

Файл подписанного релиза, по-видимому, не соответствует ISO, который я пробовал, поэтому мне пришлось также перейти --no-check-gpgк нему debootstrap, что означало редактирование файла шаблона /usr/share/lxc/templatesдля добавления аргумента:

--- lxc-debian~ 2015-03-04 10:04:12.628619962 +0000
+++ lxc-debian  2015-03-04 10:04:17.420619851 +0000
@@ -232,7 +232,6 @@
     # download a mini debian into a cache
     echo "Downloading debian minimal ..."
     debootstrap --verbose --variant=minbase --arch=$arch \
+   --no-check-gpg \
         --include=$packages \
         "$release" "$cache/partial-$release-$arch" $MIRROR
     if [ $? -ne 0 ]; then

Итак, однажды настроенный:

# mount -o loop debian-7.8.0-amd64-CD-1.iso /mnt
# export MIRROR=file:///mnt
# lxc-create -t debian -n p1 -- -r wheezy

работал.

jmtd
источник