Como fazer um template local para um container linux e apontar para isso

8

A coisa é digamos que eu quero fazer o meu contêiner linux. O primeiro comando invariavelmente é: -

sudo lxc-create -t debian -n p1

Geralmente é 'ubuntu' para o nome do template, mas como eu sou um fanboy do Debian, substituí-lo pelo debian. O resultado final é o mesmo, ele começa a baixar os componentes do debian.org através do modelo lxc-debian escrito em / 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 

Eu tenho um arquivo de imagem debian-wheezy.iso local. Existe uma maneira de dizê-lo para usar essa imagem local .iso em vez de ir para a web.

    
por shirish 24.02.2015 / 18:14

1 resposta

12

o argumento fornecido para -t é um arquivo em /usr/share/lxc/templates . Observando o modelo lxc-debian , a rotina que faz o download chama-se download_debian() e o trabalho é executado por debootstrap :

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

Olhando para a página de manual, debootstrap pode usar um diretório local para os arquivos de espelho em vez de um endereço de rede

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

Portanto, para usar seus dados locais, monte seu ISO no sistema de arquivos em algum lugar; definir a variável de ambiente MIRROR; invoque lxc-create .

O arquivo de lançamento assinado não parecia estar no ISO que eu tentei, então eu tive que passar também --no-check-gpg para debootstrap , o que significava editar o arquivo de modelo em /usr/share/lxc/templates para adicionar o argumento:

--- 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

Então, uma vez ajustado:

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

funcionou.

    
por 04.03.2015 / 11:06

Tags