# Contenedor

> Una caja cerrada con un programa y todo lo que necesita para correr en cualquier lado.

- Nivel: Básico
- Temas: Cloud, Software
- URL: https://tidbit.legios.com.ar/es/container/
- En inglés: [Container](https://tidbit.legios.com.ar/container/)

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.

## Una analogía

Un contenedor de barco. Sea lo que sea que tenga adentro, cualquier grúa, camión o barco sabe cómo manejar la caja, y la carga va de puerto en puerto sin reempacarse.

## 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)](https://docs.docker.com/get-started/docker-overview/)
- [¿Qué es la contenedorización? (AWS)](https://aws.amazon.com/es/what-is/containerization/)
- [Contenedor de software (Wikipedia)](https://es.wikipedia.org/wiki/Docker_(software))

## Términos relacionados

- [Paquete](https://tidbit.legios.com.ar/es/packet/): El pedacito en que se corta cada dato de internet antes de viajar.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [Computación en la nube](https://tidbit.legios.com.ar/es/cloud-computing/): Alquilar computadoras por internet en vez de comprar las tuyas.
- [Docker](https://tidbit.legios.com.ar/es/docker/): La herramienta que popularizó los contenedores: empaquetás una vez, corre en todos lados.
- [Python](https://tidbit.legios.com.ar/es/python/): Un lenguaje de programación muy usado, conocido por ser fácil de leer y de escribir.
- [Máquina virtual](https://tidbit.legios.com.ar/es/virtual-machine/): Una computadora completa hecha de software, que corre adentro de una real.
- [Sistema operativo](https://tidbit.legios.com.ar/es/operating-system/): El software base que maneja un dispositivo y reparte su hardware entre todas las apps.
- [Kubernetes](https://tidbit.legios.com.ar/es/kubernetes/): El sistema que corre y cuida contenedores en muchas máquinas a la vez.
