Este es un artículo para los que aun piensan que lo de Docker y contenedores no va con ellos. Voy a simplificar mucho pero quiero que se entienda lo importante que es lo que tenemos entre manos. Si eres alguien que ya conoce Docker este artículo te aburrirá.
Yo era un despistado que no conocía Docker hace tan solo un año. Y en los últimos eventos en los que hemos participado en Ackstorm ( #AzureDevOpsDay, #AzureBoortCamp, AWS BCN, #OpenExpo, etc…) antes de cada charla siempre pregunto quién NO conoce Docker. Y siempre una parte de los asistentes valientes levantan la mano, eso unido a los que por pudor no se atreven a delatarse cifra la cantidad en casi la mitad de los asistentes.
Sinceramente los entiendo, tanto ruido, tanta información, tantas promesas revolucionarias en las que se quedan en eso, en promesas.
Pero lo de los Docker va en serio y es bueno saber de dónde salen y qué podemos esperar de esto. Además somos partner oficial de Docker y lo hicimos sin ninguna duda. No hay otro camino.
Contenedores, isolación del kernel de linuX
Los contenedores son viejos casi como Linux, bueno, como la versión 2.6.24 del Kernel (hace 8 años), y sencillamente permiten ligar una colección de procesos y tratarlos con unos determinados parámetros y límites. En otras palabras, nos permite decirle a Linux “-¡Hey! a partir de ahora el sistema operativo / esta aplicación se ejecuta separadamente y desde este directorio “
Docker, contenedores con Git: en ayuda de los programadores
A los chicos de Docker se le tiene que reconocer la idea genial de utilizar lo anterior con Git para desarrollar un sistema completo. Git es otra bestia que conviene conocer porque puede montar un ‘pollo’ en el departamento de desarrollo y también es el estándar de control de código y versiones actual (Azure acaba de anunciar que lo soportará y colaborará activamente).
Creado por Linus Torvalds para controlar el código del Kernel de Linux (a día de hoy unas 9.8 millones de líneas de código, más de 12 millones con comentarios) y desde el 2005 más de 12.000 desarrolladores y más de 1.200 empresas implicadas). Nada más y nada menos.
Lo importante de Git es que permite a un programador gestionar los cambios en su código, cambio a cambio o “comit a comit”. Escribir un programa y poder controlar en cada momento las líneas que cambian, decidir que este código funciona, volver para atrás, comprobar diferencias entre lo que escribí ayer y lo de hoy. Y además sincronizarse con otros muchos desarrolladores que trabajan en el mismo código que yo.
Docker pensó “- ¿Y si lo junto? ¿Y si puedo versionar un sistema operativo y construirlo y manejarlo como si fuera código?” Cada aplicación que instale, cada configuración que añada, cada uno de los cambios de mi sistema operativo lo gestionaré con Git. Puedo comparar versiones, actualizar cambios, tirar para atrás.
¿Por qué son tan importantes? ¿Por qué se han colado en la administración de sistemas?
Docker se inventó pensando en los desarrolladores. Se les dio la posibilidad de gestionar sistema operativos como si de código se tratara.
Pero se empezó a utilizar en sistemas en producción porque básicamente lo mismo que funcionaba en el PC del desarrollador se podía lanzar, construir capa a capa, layer a layer en los servidores en producción.
Y utilizar Docker en los servidores en producción facilita enormemente la gestión de los sistemas críticos y permite implementar técnicas que sin querer o queriendo están desplazando otros lenguajes de infraestructura. En particular el boom ha venido porque los principales proveedores de infraestructura ( máquinas virtuales y anexos del Cloud lo ofrecen, haciendo por primera vez en la historia que cambiar de proveedor de infraestructura sea tan fácil como loguearse en una nueva máquina y hacer “Docker run my_aplicación” … y funciona.
¡Sí, funciona……… de verdad, funciona!
¡Realmente IMPRESCINDIBLES!
Pero ahora viene lo bueno, este año es el año de los Contenedores como Servicio y esto demuestra que Docker ha triunfado; AWS EC2 Container Service, Google Container Engine o el Servicio de Container de Azure son nuevos servicios basados únicamente en Docker y la cosa va a más, como Docker Cloud (Tutum) que son ni más ni menos los primeros servicios que permiten no utilizar máquinas virtuales, ni servicios de plataforma, sino poder lanzar mis containers en un proveedor con las ventajas de rendimiento y escalabilidad que eso comporta, además de pagar por uso.