Definición: Entorno de ejecucion aislado y ligero que empaqueta una aplicacion con todas sus dependencias, garantizando consistencia entre entornos de desarrollo y produccion.
— Fuente: NERVICO, Consultoría de Desarrollo de Producto
Que es un contenedor
Un contenedor es un entorno de ejecucion aislado y ligero que empaqueta una aplicacion junto con todas sus dependencias: librerias, runtime, archivos de configuracion y variables de entorno. A diferencia de las maquinas virtuales, los contenedores comparten el kernel del sistema operativo anfitrion, lo que los hace significativamente mas ligeros y rapidos de iniciar. Cada contenedor opera como un proceso aislado con su propio sistema de archivos y espacio de red.
Como funciona
Un contenedor se crea a partir de una imagen, que es un paquete inmutable con todo lo necesario para ejecutar la aplicacion. Las imagenes se construyen en capas usando un archivo de definicion (como un Dockerfile). Cada capa representa un cambio incremental sobre la anterior. El runtime de contenedores (como Docker Engine o containerd) se encarga de crear el aislamiento a nivel de proceso utilizando namespaces y cgroups del kernel de Linux. Los contenedores arrancan en milisegundos y consumen una fraccion de los recursos que requiere una maquina virtual.
Por que importa
Los contenedores resolvieron el problema historico de inconsistencia entre entornos. Una aplicacion que funciona en el portatil del desarrollador funciona exactamente igual en staging y en produccion. Esto acelera los ciclos de desarrollo, simplifica los despliegues y es la base sobre la que funcionan plataformas de orquestacion como Kubernetes. Ademas, permiten escalar horizontalmente de forma eficiente, lanzando multiples instancias del mismo contenedor en segundos.
Ejemplo practico
Un equipo desarrolla una aplicacion con tres servicios: API en Node.js, worker en Python y base de datos PostgreSQL. Cada componente tiene un contenedor propio con sus dependencias especificas. En desarrollo, los tres contenedores se levantan con un solo comando. El mismo conjunto de imagenes se despliega en produccion sin modificaciones. Cuando el trafico aumenta, el orquestador lanza automaticamente cinco replicas adicionales del contenedor de API en menos de 10 segundos.