Contenedor
Una caja cerrada con un programa y todo lo que necesita para correr en cualquier lado.
Un contenedor empaqueta un programa junto con todo lo que necesita para correr: las librerías, la configuración, la versión exacta del lenguaje. Ese paquete, llamado imagen, corre igual en tu laptop, en la máquina de un compañero y en un servidor en la nube. Docker es la herramienta que hizo populares a los contenedores, y un Dockerfile es la receta con la que se arma una imagen.
Antes de los contenedores, "en mi máquina anda" era un problema de todos los días: el servidor tenía otra versión de Python, faltaba una librería, había un ajuste que nadie recordaba. Un contenedor termina esa discusión, porque el entorno viaja con el código. Además arranca en segundos y es mucho más liviano que una máquina virtual completa, porque los contenedores comparten el sistema operativo de la máquina que los aloja.
Hoy la mayoría de los servicios web se entregan como contenedores. Un servidor puede correr decenas, aislados entre sí, y herramientas como Kubernetes o Amazon ECS y Fargate deciden dónde corre cada uno y lo reinician si se cae.
Para quedarse
- Una imagen es el paquete congelado; un contenedor es una copia corriendo.
- Los registros como Docker Hub o Amazon ECR son donde se guardan y comparten las imágenes.
- Los contenedores comparten el sistema operativo del host, por eso arrancan rápido y usan poca memoria.
- Más liviano que una máquina virtual, con un aislamiento algo menor.
Para seguir leyendo
- ¿Qué es Docker? (documentación oficial, en inglés)
- ¿Qué es la contenedorización? (AWS)
- Contenedor de software (Wikipedia)