Grupo Linuxero del Bajío

Contenedores

Juan Caballero

Uno de los procesos más extendidos en TI es la instalacción de programas y servicios, llega a ser tedioso el tener que resolver todas las dependencias y compilar un programa para que funcione como es debido.

La gran diversidad de sistemas operativos y sus derivados trae alta complejidad para el desarrollador y por ende, casi nunca se soportan todos los posibles casos, más aún “la nube” trae la complejidad de trabajar o bien en un sistema recién horneado o limitado.

Por ello, se han implementado diversas soluciones (que no resuelven el problema al 100%), siendo una de ellas los llamados contenedores, liderado por Docker (https://www.docker.com/) y alternativas como Singularity (https://sylabs.io/singularity/).

La idea de los contenedores es el poder definir el sistema, dependencias y ejecutables para crear un objeto (el contenedor) que es autosuficiente, la “receta” escrita en un archivo de texto es facilmente creada y puede generarse como un binario que se puede depositar en un repositorio público (Docker Hub o Quay.io) o privado donde se puede obtener y descargar para ejecutar.

La ejecuión es de cierta manera virtualizada, pero sin ser una VM, pero es simple como:

$ docker run -it –rm busybox:latest echo “hello container” hello container

Existen diversas imágenes base para crear algo, algo tan minimo como busybox o alpine solo son unos pocos megas, e incluso distribuciones como ubuntu, centos, debian, etc, proveen imágenes donde podemos empezar a construir lo que necesitamos crear e igual grupos especificos mantienen imágenes como python, mysql, golang, postgres, etc.

Ya creado el contenedor, es posible interactuar con otros contenedores a manera de servicios, escalarlos, transportarlos a otra infraestructura, y más.