En este post reutilizaremos la máquina virtual creada en el post anterior box-sistema-base-para-vagrant-desde-cero
- Ubuntu 14.04 x64
- VirtualBox 5.0.2 + ExtensionPack
- Docker version 1.7.1
- CentOS 7 x64 (El nodo virtual del post anterior lo llamamos vmcentos7x64)
Arrancamos la máquina virtual creada en el post anterior:
VBoxManage startvm --type headless vmcentos7x64
Nos conectamos a ella (si estamos usando la máquina del post anterior, el NAT estaba realizado sobre el puerto 2222).
ssh root@localhost -p 2222
Creamos una imagen completa del sistema operativo con usuario root, obviando los filsystems virtuales /proc y /sys ya que se crean por el kernel...
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf /root/vmcentos7x64-base.tar /
Esto creará un tar con todo el sistema en /root/vmcentos7x64-base.tar, sacamos el fichero del sistema virtualizado con VirtualBox y lo llevamos por ejemplo a nuestro propio host.
scp -P 2222 root@localhost:/root/vmcentos7x64-base.tar /tmp
Ahora, paramos la máquina virtual ya que no la necesitamos.
VBoxManage controlvm vmcentos7x64 poweroff
Importamos la imagen creada de los filesystems de la máquina virtual en docker con el nombre vmcentos7x64-base en nuestro ejemplo.
cat /tmp/vmcentos7x64-base.tar | docker import - vmcentos7x64-base
Tras unos segundos nos aparece el id del contenedor y podemos verificar la imagen listando las imágenes disponibles en docker.
docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
vmcentos7x64-base latest 5614f7ab3103 2 minutes ago 1.433 GB
ubuntu latest d2a0ecffe6fa 10 weeks ago 188.4 MB
centos latest 7322fbe74aa5 3 months ago 172.2 MB
Revisamos la versión de nuestro contenedor visualizando por ejemplo la versión de centos del mismo.
docker run -i -t vmcentos7x64-base cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
Ya tenemos disponible un contenedor docker con una versión base de CentOS 7.1.1503. Para ello, bastará con arrancar una shell en el contenedor.
docker run -i -t vmcentos7x64-base sh
Verificamos sobre la shell que estamos en un contenedor de mi host (en este caso Ubuntu 14.04LTS) comprobando el kernel arrancado.
sh-4.2# uname -a
Linux bd48dacb894f 3.16.0-48-generic #64~14.04.1-Ubuntu SMP Thu Aug 20 23:03:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux