viernes, 20 de enero de 2017

Docker en Synology NAS - ventajas e inconvenientes

Introducción

¿Qué es Docker?
Se trata de una plataforma de minivirtualización que los desarrolladores / programadores usan para hacer pruebas de sus programas. Vamos a ver su utilización con un ejemplo:
     Supongamos que quieres probar un pequeño programa en Linux que usa una base de datos, para consultar y guardar datos, y luego verifica que otros servidores están activos y funcionando. Para probar dicho software, necesitas montar un ordenador físico, instalarle el sistema operativo, el servidor de apache para la página web, el servicio de manejo de la base de datos (MySql), etc. Otra forma que consumiría menos recursos es crear una máquina virtual, en lugar de un PC físico, y luego instalar todo lo anterior. 
La tercera opción, que es donde entra Docker, es usar contenedores, o pequeños habitáculos basados en una imagen, que permiten probar y ejecutar programas como si corriesen en un kernel de linux, pero sin tener que montar una máquina virtual. 

Además del ahorro de tiempo y costes, resulta que existen múltiples contenedores listos para usar en https://hub.docker.com/explore/


Ventajas

Con apenas unos clicks, podemos lanzar contenedores en los que probar cosas, ejecutar código, y todo sin poner en riesgo nuestro sistema de trabajo, ya que el contenedor sólo permite el acceso sin privilegios al kernel de linux, por lo que si hacemos algo mal, o ejecutamos código malicioso, no podrá dañar nuestro equipo. 


Aprovechando la NAS

Disponemos de un paquete de software de Docker disponible para la NAS, desde el repositorio. Una vez instalado, necesitamos activar una opción de la configuración de red. Está en ....... Panel de control - > Interfaz de red -> Administrar -> Configuración de open Vswitch => Activar



Me descargo la imagen de ubuntu, para poder generar contenedores que se basen en ella. 

Creo mi primer contenedor de prueba desde el menú "Contenedor"

Lo lanzo, y puedo verlo activo, su dirección IP, e incluso una pestaña con el terminal para poder teclear comandos. Pero en mi caso no me reconoce algo tan básico como "docker --help". Tendría que intentar acceder a docker por SSH, porque la terminal que ofrece no es todo lo potente que debería.   

Probando con otras imágenes, como la última de ubuntu (devel), si he conseguido entrar y ejecutar comandos en la terminal. Curiosamente me empezó a funcionar bien después de instalar Redmine (explicación en otro post), ya que Redmine preinstala Docker para hacer funcionar el gestor de proyectos Redmine. 


Inconvenientes adicionales

La licencia es válida por un año. Es decir, que dentro de un año, no me dejará ejecutar mi contenedores, muy probablemente. Añadir una licencia cuesta 54€ en Amazon.....(Synology Docker DSM 1 License). Habrá que estar al tanto de este punto. 


Alternativa


La solución es instalar Docker en otro sistema. Si quieres instalarlo en Windows, necesitas un Windows 10 Pro X64, así que no es para todos, o al menos no para lo que no tenemos lo último de windows.


Alternativa viable: 

seguir estos pasos para instalarlo en Linux, tanto desde una máquina virtual, como desde un ordenador físico con Linux:


En mi caso tengo Centos....

  1. Abro un terminal y pongo (sin comillas) "sudo yum update"  
  2. Eso actualiza el sistema....(se toma casi una hora)
  3. Luego tecleo "sudo tee /etc/yum.repos.d/docker.repo <'EOF'" para que añada el repositorio adecuado [ojo al caracter de ' o acento al final de EOF]
  4. [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg 
  5. EOF   [Esto guarda un archivo con ese contenido.] 
  6. A continuación tecleo "sudo yum install docker-engine" (esto instala el motor de Docker) 
  7. sudo systemctl enable docker.service (Esto lanza el servicio del programa y además lo ejecutará cada vez que reinicie) 
  8. Reiniciamos, porque si no a la primera no funciona. 
  9. Y ahora lanzamos el primer programa, típico de prueba "sudo docker run --rm hello-world" o este [docker run ubuntu /bin/echo 'Hello world'] (sin los corchetes) 

    Para verificar que el servicio está corriendo, podemos usar "sudo systemctl status docker"


Aquí muestro una captura de docker y mi primera prueba....




Como no tenía la imagen localmente, la ha descargado (50 megas) y luego ejecutó el comando. 

Ahora toca seguir avanzando con Docker....más info en....https://docs.docker.com/engine/tutorials/dockerizing/

Saludos