Blackhold

Convertir contenedor lxc a contenedor compatible con proxmox

Posted on desembre 21st, 2015 by admin

Un contenedor lxc funcionará en un host que tiene instalado proxmox, pero si queremos poder administrarlo cómodamente desde el interfaz de proxmox, tendremos que prepararlo para que lo entienda proxmox.

Inicialmente había probado de mover directamente los ficheros a los directorios correctos, pero de momento no veo como hacer que proxmox entienda un rootfs sin formato .raw, una de las cosas que no me gustó al ver trabajar a proxmox con lxc, con vz podías acceder desde el host directamente a los ficheros del contenedor :(

Lo primero será localizar el directorio rootfs de nuestra maquina lxc y comprimirlo en formato .tar.gz

root@blackhold:~# cd /root/silentwatcher/rootfs/
root@blackhold:~/silentwatcher/rootfs# tar cvzf /var/lib/vz/template/cache/correu.tar.gz ./

Ahora vamos a crear el contenedor con el comando pct, en esta maquina le vamos a añadir 2 interfaces y en la eth0 va a estar la ip de guifi y en la eth1 la ipv6.

root@blackhold:/etc/pve/lxc# pct create 102 /var/lib/vz/template/cache/correu.tar.gz -description Blackhold-correu -hostname Blackhold-correu -memory 1024 -nameserver 8.8.8.8 -net0 name=eth0,hwaddr=6E:70:C3:3A:D3:E6,bridge=vmbr0,ip=10.90.231.12/24,gw=10.90.231.1 -net1 name=eth1,hwaddr=CA:BD:FB:91:2F:A9,bridge=vmbr1,ip6=2a00:1508:6001::6a/64,gw6=2a00:1508:6001::1 -storage local -password lalalalala
Formatting '/var/lib/vz/images/102/vm-102-disk-1.raw', fmt=raw size=4294967296
mke2fs 1.42.12 (29-Aug-2014)
Discarding device blocks: done                            
Creating filesystem with 1048576 4k blocks and 262144 inodes
Filesystem UUID: 7231018e-23bf-45c0-87b8-276c4a0468b0
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Multiple mount protection is enabled with update interval 5 seconds.
Writing superblocks and filesystem accounting information: done 

extracting archive '/var/lib/vz/template/cache/correu.tar.gz'
Total bytes read: 3686256640 (3.5GiB, 41MiB/s)
Detected container architecture: amd64
Creating SSH host key 'ssh_host_ecdsa_key' - this may take some time ...
Creating SSH host key 'ssh_host_rsa_key' - this may take some time ...
Creating SSH host key 'ssh_host_dsa_key' - this may take some time ...
Creating SSH host key 'ssh_host_ed25519_key' - this may take some time ...
Creating SSH host key 'ssh_host_key' - this may take some time ...

/!\ ACTUALIZACIÓN /!\

Si queremos que no se cree el contenedor dentro de un fichero .raw, le diremos al crearlo que el tamaño del disco sea 0, por el interfaz web no podremos, así que sólo nos queda hacerlo por terminal (opción -rootfs local:0):

root@blackhold:~# pct create 102 /var/lib/vz/template/cache/correu.tar.gz -description Blackhold-correu -hostname Blackhold-correu -memory 1024 -nameserver 8.8.8.8 -net0 name=eth0,hwaddr=6E:70:C3:3A:D3:E6,bridge=vmbr0,ip=10.90.231.12/24,gw=10.90.231.1 -net1 name=eth1,hwaddr=CA:BD:FB:91:2F:A9,bridge=vmbr1,ip6=2a00:1508:6001::6a/64,gw6=2a00:1508:6001::1 -storage local -rootfs local:0 -password lalalalala
extracting archive '/var/lib/vz/template/cache/correu.tar.gz'
Total bytes read: 3686256640 (3.5GiB, 63MiB/s)
Detected container architecture: amd64
Creating SSH host key 'ssh_host_ed25519_key' - this may take some time ...
Creating SSH host key 'ssh_host_key' - this may take some time ...
Creating SSH host key 'ssh_host_rsa_key' - this may take some time ...
Creating SSH host key 'ssh_host_ecdsa_key' - this may take some time ...
Creating SSH host key 'ssh_host_dsa_key' - this may take some time ...

Atención, con este sistema, el contenedor no tiene cuotas de disco, así que el límite va a ser el espacio disponible en la partición donde tengamos los ficheros del contenedor.

Para poder acceder a los ficheros del contenedor, desde el host tendremos que hacer esto:

root@blackhold:~# mount -t auto /dev/loop1 /mnt/102

Nota: tengo 2 contenedores activos de un total de 3, que los loops se corresponderán al orden de inicio del contenedor virtual.

Cada uno de los /dev/loopX serán las particiones ext4 de cada uno de nuestros contenedores :) ¡duda resuelta!

La putada usando el .raw pero es que para redimensionar el disco tienes que parar la maquina, esto si, no necesitas ejecutar dentro del contenedor un resizefs como ocurre en vmware.

« »

guy fawkes