El contenedor Docker


Contenedores

El concepto de contenedor juega un papel clave en el universo Devops.

Para hacernos una idea, un contenedor no es más que una pieza de software que empaqueta el código de la aplicación además de todas las dependencias requeridas para su funcionamiento.

Su cometido es permitir a los equipos de desarrollo (ED) y de operaciones (EO), empaquetar aplicaciones y servicios de manera independiente del sistema operativo y estos puedan ser ejecutados solventemente en diferentes entornos.

Entre sus ventajas destacan su livianidad al ser ligeros y su portabilidad, aportando agilidad y confiabilidad en los procesos de entrega de software.

Entre ellos los que ganan en popularidad debido a su gran soporte y funcionalidades, y son en los que más me dedicaré en lo sucesivo, son Docker y Kubernetes, los cuales desarrollo a continución.



El contenedor Docker

Docker nos provee de una plataforma de contenedores que permite a los desarrolladores empaquetar una aplicación y todas las dependencias necesarias en un único contenedor el cual es portable.

Por poner un ejemplo, imaginemos una empresa de comercio online en la cual han decidio que el software está estructurado del siguiente modo:

Frontend, donde aplica un contenedor docker basado en React además de todas sus dependencias, incluyendo herramientas de construcción y pruebas automatizadas que se ejecutan en el propio contenedor. Todo esto permite al ED, poder trabajar el código en local, para fase beta o testeos, y una vez tengan el código optimizado y listo pueden construirlo y ejecutarlo en la propia máquina o en remoto.

Backend, aplicando otro contenedor docker separado, basado en node.js, ya que dicha infraestructura está muy extendida para el despliegue del lado del servidor. Node.js proporciona una Base de datos, Servidor Web, y un entorno de pruebas automatizado que se ejecutan en el propio contenedor.

Podemos observar como con dos contenedores dockers separados, podemos levantar una aplicación robusta que aporte, eficiencia, en los procesos de entrega del mismo.

 


 

Imágenes

El contenedor Docker está estrechamente ligado al concepto de Imagen, y es que para entendernos, la plasmación de la tecnología Docker.

El contenedor Docker contiene la imagen donde esta todo el software necesario e inicia la aplicación. La imagen es un paquete ligero y ejecutable. Supongamos el caso del Frontend; pues su software esta plasmado en una imagen y cualquier desarrollador puede transportar esa imagen y ejecutarla en cualquier otro contenedor Docker.

La imagen es un archivo con todo lo necesario a modo de plantilla, y el contenedor Docker ya contiene la imagen en ejecución.

 

 

Docker Engine

Es el fragmento de software que permite ejecutar los contenedores, y será instalado en el Sistema operativo de la máquina correspondiente.

Cuando se crea un contenedor, Docker Engine busca en su repositorio local la imagen necesaria. Si la imagen ya está almacenada en el repositorio local, Docker Engine utiliza esa imagen para crear el contenedor. Si no está en el repositorio local, Docker Engine busca la imagen en el registro de imágenes de Docker y la descarga automáticamente.

 

 

Docker Hub

Docker Hub es un repositorio de imágenes que utiliza Docker por defecto. Están tanto imágenes disponibles públicamente, y otras de caracter privativo. Existen multitud de infraestructuras a nuetra disposición, desde servidores Nginx, node.js, python, etc. Se puede decir, que funciona como el repositorio Git de la infraestructura Docker.


dockerhub

 

 

 

Docker Compose

Orquestador ligero de contenedores , considerado el más sencillo y básico, muy popularmente usado en entornos de desarrollo para soluciones de menor tamaño

 

 

Docker Swarm

Nos encontramos ante un orquestador mas robusto que Docker Compose , indicado para manejar multiples máquinas en un cluster


 

Kubernetes

Orquestador de clusters a un nivel superior y empresarial.

Un simil para Kubernetes, podría ser el de un director de orquesta filarmónica. Mediante esta plataforma orquesta o dirige los contenedores, y es puede gestionar varios contenedores y sus interacciones en una infraestructura de contenedores distribuida.

Juntos, Docker y Kubernetes proporcionan una solución completa de contenedores que permite a los equipos de DevOps automatizar y escalar la implementación de aplicaciones y servicios en entornos de producción.

Categorías