Recorrido histórico

Contenidos

  • Contenedores con Docker
  • Recorrido histórico: de Contenedores a Orquestación y Cloud Computing
  • De Docker a Kubernetes: entendiendo qué son los contenedores y por qué es una de las mayores revoluciones de la industria del desarrollo.
  • La Arquitectura de Docker

Los comienzos

Allá por 2013 Docker empezó a ganar popularidad permitiendo a los desarrolladores crear, ejecutar y escalar rápidamente sus aplicaciones creando contenedores. Parte de su éxito se debe a ser Open Source y al apoyo de compañias como IBM, Microsoft, RedHat o Google.

Docker, en apenas dos años, había sido capaz de convertir una tecnología mucho en una herramienta fundamental al alcance de todos gracias a su mayor facilidad de uso.

Su evolución ha sido imparable, representando actualmente uno de los mecanismos comunes para desplegar software en cualquier servidor por medio de contenedores software.

Tanto Docker como Kubernetes, conocidos por ser uno de los más populares gestores de contenedores de software, se han convertido con mérito propios en los estándares de facto de la industria.

¿En qué ayudan los containers?

Gracias a esta tecnología, Los desarrolladores han podido independizarse en cierta medida de los sysadmin y han abrazado el concepto de DevOps más abiertamente. Es decir, son capaces tanto de crear código como de distribuirlo de forma sencilla sin quebraderos de cabeza.

¿Qué son los contenedores de software?

Para explicar qué son los contenedores software vamos a bajar al nivel más simple de abstracción.

Buscando alguna analogía con el mundo real podemos hablar de esos containers que vemos siento transportados en bardo de un sitio a otro. No nos importa su contenido sino su forma modular para ser almacenados y transportados de un sitio a otro como cajas.

Algo parecido ocurre con los contenedores software. Dentro de ellos podemos alojar todas las dependencias que nuestra aplicación necesite para ser ejecutada: empezando por el propio código, las librerías del sistema, el entorno de ejecución o cualquier tipo de configuración. Desde fuera del contenedor no necesitamos mucho más. Dentro están aislados para que puedan ser ejecutados en cualquier lugar.

Los contenedores son la solución al problema habitual, por ejemplo, de moverse entre entornos de desarrollo como puede ser una máquina local o un entorno real de producción. Podemos probar de forma segura una aplicación sin preocuparnos de que nuestro código se comporte de forma distinta. Esto es debido a que como nos referíamos antes, todo lo que necesitamos está dentro del contenedor.

Solomon Hykes, creador de Docker, lo explicaba del siguiente modo:

”Utilizando contenedores para ejecutar tu código solventamos el típico quebradero de cabeza que estés usando una versión de Python 2.7 diferente en local o en el entorno de pruebas pero en producción la versión sea totalmente distinta como Python 3 u otras dependencias propia del entorno de ejecución, incluso el sistema operativo.

Todo lo que necesitas está dentro del propio contenedor y es invariable

En definitiva, los contenedores representan un mecanismo de empaquetado lógico donde las aplicaciones tienen todo lo que necesitan para ejecutarse.

Describiéndolo en pequeño archivo de configuración. Con la ventaja de poder ser versionado, reutilizado y replicado fácilmente por otros desarrolladores o por los administradores de sistemas que tengan que escalar esa aplicación sin necesidad de conocer internamente cómo funciona nuestra aplicación. El fichero de Docker bastará para adecuar el entorno de ejecución y configurar el servidor dónde va a ser escalado. A partir de ese fichero se puede generar una imagen que pueda ser desplegada en un servidor en segundos.

¿Cuáles son las ventajas?

  • No necesita Hypervisor
  • Uso eficiente de recursos (CPU, memoria)
  • Menor consumo de disco (mucho menor).
  • Levantan muy rápido (milisegundos).
  • Ideal para Microservicios y DevOps.
  • Fácilmente automatizables.
  • Son muy fáciles de transportar y recreas (text file).
  • Permiten tratar a la infraestructura como código.

¿Cómo funciona?

¿Para qué se utiliza?

¿Qué pasó en 5 años?

En 5 años se desarrollador todos estos servicios PaaS