Docker , resumiendo, es una alternativa de virtualización que requiere unos recursos mínimos para desplegar sus contenedores. En éstos podremos almacenar imágenes de sistemas operativos completos como distribuciones de Linux, o simples servicios. También se pueden usar como servidores, pudiendo desplegar varios servidores en una misma máquina. Pero de todo esto ya hablamos en una publicación anterior.

¿Por qué desarrollar usando Docker?

Si usamos la perspectiva de un desarrollador, para tener un sistema aislado que cuente únicamente con las librerías que vamos a necesitar para el proyecto que tenemos entre manos, esta herramienta guarda un enorme potencial. Ya no tendremos que descargar y almacenar librerías para los muchos proyectos que llevemos acabo, puesto que podremos, como decía, desarrollar cada aplicación con sus propios recursos en entornos aislados, sin que afecte a otros desarrollos o incluso al sistema base.

Por supuesto también reducirá la cantidad de errores recibidos porque encontremos “residuos” de otros desarrollos en nuestro sistema, que a más de uno ha traído de cabeza…

Ya lo decía Java (aunque después no lo llevase del todo a cabo…) “escribe una vez, ejecuta en cualquier lugar” ; y a esto, Docker nos echa una mano, puesto que desarrollaremos en un entorno que consideremos óptimo para el uso que se dará a la aplicación.

También realizaremos el trabajo más rápidamente, puesto que como hemos comentado en días pasados, desplegar un contenedor Docker es cuestión de minutos en el peor de los casos, lo que nos ayudará con las fases de testeo y los tiempos que dedicamos a esta labor.

Otra gran ventaja es que el sistema que contendremos y desplegaremos en Docker, vendrá definido por nosotros mismos que añadiremos la paquetería que consideremos necesaria. Esto sumado al control de versiones que nos ofrece, donde podremos recuperar una versión previa a un cambio que no ha resultado todo lo acertado que creíamos, es todo un acierto y un gran punto a tener en cuenta si estamos dudando si implantarlo en nuestra empresa, por ejemplo.

Hay todo un proceso de introducción a Docker por el que es más que recomendable pasar, y qué menos que hacerlo de la mano de profesionales como los que encontramos impartiendo el curso de Despliegue de Apps en Docker que se está desarrollando aquí en OpenWebinars.

Se les preguntamos a los profesores, seguramente coincidan en que han pasado bastante, por no decir mucho tiempo configurando ficheros ‘Dockerfile’ , que son los que contienen los parámetros que definirán nuestro contenedor.

Aunque por la red hay ya “plantillas” en las que sólo tendremos que sustituir un par de configuraciones, recomiendo encarecidamente el aprendizaje de creación de un Dockerfile desde cero, por la cantidad de conocimiento que se adquiere mientras se ve cómo se va creando la “criatura”.

No obstante las empresas también facilitan esta labor a quienes no les importe trabajar en un entorno ya establecido y cargado de herramientas (se vayan a usar o no), como es el caso de Eclipse, que pone a nuestra disposición un contenedor Docker con multitud de aplicaciones destinadas al desarrollo .

Algo muy recurrente en los que ya llevan un tiempo con Docker, es implementar una línea en el .bashrc para mejorar la identificación de los contenedores.

alias dl="docker ps -l -q"

Aunque en este enlace podemos encontrar muchos más consejos e ideas sobre ‘alias’.

Otro aspecto a cuidar al trabajar con Docker es saber qué sistema es el que nos interesa usar como base, así como confiar en su fiabilidad para evitar trabajar sobre una base infectada con código malicioso (que puede traernos muchos quebraderos de cabeza al pensar que se puede tratar de nuestro código y pasar horas y horas revisando…).

En la red encontraremos a día de hoy dada la popularidad de Docker, multitud de fuentes donde poder obtener contenedores para descargar y usar, aunque como referente principal deberemos tener Docker Hub , la plataforma de compartición del propio Docker donde encontraremos casi cualquier sistema o servicio que se nos pase por la mente como una imagen Ubuntu , SUSELinux , un Wordpress preinstalado, un MySQL ya preconfigurado, etc…

También podemos encontrar imágenes destinadas al desarrollo, idea que nos ocupa, como las disponibles para programar con Java , Ruby o Flask con Python … Pero como decía antes, todo proceso de creación nos aportará grandes nociones sobre la materia que tratemos, y en Docker, esto lo apreciaremos muchísimo a la hora de lidiar con algún contenedor que nos pueda estar dando problemas.