Sin duda cuando escuchaba a mi compañero Sylvain conjuntamente al equipo informático de GeoBolivia hablar sobre “Docker” , busque alguna documentación que explique en “facilito” su conceptualización e importancia para la plataforma IDE geOrchestra.
¿Qué es Docker?
Docker muchas veces es confundido con una tecnología de máquina virtual, pero lo que en realidad hace Docker es crear dentro de una máquina un entorno de ejecución de procesos Linux u otro completamente aislado del resto del sistema. Por lo que no es una máquina virtual en sí.
¿Y para qué sirve?
Docker permite, de una forma compacta, reutilizable y altamente reproducible, empaquetar un sistema de software que funciona aisladamente dentro del sistema, por lo que no entra en conflicto con el software instalado de forma nativa ni con las versiones de éste que pudieran estar presentes. [1]
Esto permite que cada proyecto se desarrolle sobre versiones muy específicas de software durante todo su periodo de desarrollo: el propio desarrollo, las pruebas y el despliegue.
Es decir, el equipo comienza el proyecto creando una infraestructura Docker compuesta de una o más imágenes (la base sobre la que se instala el software) que contienen el software requerido.
Estas imágenes son distribuidas al resto del equipo, que crea con ellas contenedores (imágenes utilizadas para un fin concreto). Estos contenedores están enlazados entre ellos, proporcionando una infraestructura de software cohesionada y personalizada para el proyecto.
Lo increíble de Docker es que estas imágenes son las mismas en desarrollo que en el despliegue de producción. Ya no hay que instalar software en los servidores: se instalan imágenes Docker que después son utilizadas cuantas veces sea necesario para crear contenedores que den servicio a cada una de las aplicaciones.
Las mismas imágenes que se han utilizado para el desarrollo son las utilizadas en los entornos de prueba y finalmente en el despliegue, por lo que los procesos de despliegue y actualización son limpios y rápidos.
Se acabaron los problemas de múltiples versiones de un mismo software instalados en el servidor, y se reducen enormemente los procesos de migración y prueba de nuevas versiones. Verdaderamente, Docker esta cambiando la forma de trabajar.
En el caso de geOrchestra ya NO instalaríamos software en nuestras máquinas, utilizaremos la imagen adecuada y ejecutamos el software desde ella. Al utilizar todos las mismas imágenes, tenemos la certeza de que lo que funciona en la máquina A lo hará en la máquina B, ya sean estas de desarrollo, pruebas o despliegue.
¿Cual es la diferencia de una maquina virtual y un contenedor Docker?
1.- Los contenedores docker ocupan menos espacio.
2.- Los contenedores docker funcionan o se inician mas rápido que una maquina virtual.
Figura 1. Comparación entre maquinas virtuales y contenedores docker.
Fuente: https://underc0de.org/foro/gnulinux/contenedores-docker-for-dummies/
Donde:
- App1, App2 y App3: Aplicaciones utilizadas.
- Bins/Libs : Binarios y/o librerias necesarias para cada aplicación.
- Hypervisor: Plataforma que permite aplicar técnicas de control de virtualización.
- Docker Engine: Entorno de desarrollo de docker.
- Host Operating System: Sistema Operativo Anfitrión (ejemplo linux).
- Operating System: Sistema Operativo (ejemplo linux).
- Infraestructure: Infraestructura puede ser una pc o un servidor o la nube.
Ejemplo del montador de contenedores docker:
Figura 2. Ejemplo de aplicaciones Docker.
En la figura 2 muestra esquemas que refleja el funcionamiento de aplicaciones de forma modularizada, cada modulo (geoserver, geonetwork, postgres) podría interactuar una con la otra.
En el primer caso se tiene tres aplicaciones y cada una se encuentra dentro de una maquina virtual con sistema operativo linux y las librerias necesarias para el funcionamiento de cada aplicación.
En el segundo caso, existen las mismas aplicaciones con sus respectivas librerias pero dentro de contenedores docker, con docker se elimina el uso de un sistema operativo para el funcionamiento de cada aplicación.
En conclusión el funcionamiento de docker optimiza el uso de recursos (menor tiempo y menor espacio) de una infraestructura. Sin embargo en opinión de Sylvain Lesage continúa el problema de gestión, sincronización, resguardo de los datos con Docker.
Finalmente, en GeoBolivia se tiene previsto su puesta en producción la nueva versión utilizando Docker en septiembre del presente año, asimismo toda la documentación de la plataforma se la puede acceder desde estelink; y si quiere participar de los foros y discusiones al respectolink.
Referencias:
Sobre Docker:
https://underc0de.org/foro/gnulinux/contenedores-docker-for-dummies/
Instalación de Geoserver con docker:
https://github.com/georchestra/georchestra
geOrchestra y docker:
https://github.com/georchestra/docker
https://groups.google.com/forum/#!topic/georchestra-dev/QULzFg36GfM