Siguiendo con la serie de posts sobre Docker, en esta ocasión os presentamos el driver de Docker Machine para OpenNebula, con el que podremos crear máquinas virtuales con Docker dentro de nuestra plataforma cloud.

Los requisitos para poder utilizar el driver son los siguientes:

  • Docker Machine 0.5+
  • OpenNebula 4.x+

Para la instalación del plugin basta con seguir todos los pasos descritos en la URL del repositorio:
https://github.com/OpenNebula/docker-machine-opennebula

Como utilizar el driver de OpenNebula con Docker Machine:

Para utilizar el driver sólo necesitaremos disponer de acceso a un cloud con OpenNebula i configurar las variables de entorno ONE_AUTH y ONE_XMLRPC para que apunten a nuestro cloud OpenNebula y una imagen ya preparada con Docker Engine.
OpenNebula dispone de dos imágenes en modo appliance que se pueden importar desde su marketplace:

Una vez dispongamos de la imagen con Docker Engine, ya podemos levantar una màquina virtual con el driver de Docker Machine para OpenNebula, con la ejecución del siguiente comando:

docker-machine  create --driver opennebula --opennebula-network-id $NETWORK_ID --opennebula-image-name boot2docker --opennebula-image-owner oneadmin --opennebula-b2d-size 10240 mydockerengine


 
 
 
 
 
 
 
 
 
 
 
Podemos personalizar el comando con los siguientes parámetros:

--opennebula-cpu: CPU value for the VM
--opennebula-vcpu: VCPUs for the VM
--opennebula-memory: Size of memory for VM in MB
--opennebula-template-id: Template ID to use
--opennebula-template-name: Template to use
--opennebula-network-id: Network ID to connect the machine to
--opennebula-network-name: Network to connect the machine to
--opennebula-network-owner: User ID of the Network to connect the machine to
--opennebula-image-id: Image ID to use as the OS
--opennebula-image-name: Image to use as the OS
--opennebula-image-owner: Owner of the image to use as the OS
--opennebula-dev-prefix: Dev prefix to use for the images: 'vd', 'sd', 'hd', etc...
--opennebula-disk-resize: Size of disk for VM in MB
--opennebula-b2d-size: Size of the Volatile disk in MB (only for b2d)
--opennebula-ssh-user: Set the name of the SSH user
--opennebula-disable-vnc: VNC is enabled by default. Disable it with this flag

Ahora lo que haremos será conectar nuestra shell local a la de la máquina virtual para que cada vez que ejecutamos un comando de Docker, este dé órdenes al Docker Engine instalado en la máquina virtual de OpenNebula.
Obtenemos las variables de entorno de la máquina virtual.

docker-machine env mydockerengine

Link  a la shell.

eval "$(docker-machine env mydockerengine)"

Con esto ya podemos empezar a utilizar docker sobre la máquina virtual  que acabamos de crear:

docker pull nginx
docker run --name mynginx -d -p 80:80 ngin