# Docker

> La herramienta que popularizó los contenedores: empaquetás una vez, corre en todos lados.

- Nivel: Intermedio
- Temas: Cloud, Software
- URL: https://tidbit.legios.com.ar/es/docker/
- En inglés: [Docker](https://tidbit.legios.com.ar/docker/)

**Docker** es un conjunto de herramientas para construir y correr contenedores, hecho por la empresa del mismo nombre. Salió en 2013, tomó una idea vieja de Linux y la volvió usable para cualquier developer; por eso mucha gente todavía dice "un Docker" cuando habla de un contenedor.

El flujo tiene tres pasos. Escribís un **Dockerfile**, una receta corta en texto: partí de este sistema base, copiá mi código, instalá estas librerías, corré este comando. `docker build` convierte la receta en una **imagen**, un paquete cerrado con todo lo que la app necesita. `docker run` arranca un contenedor a partir de esa imagen, y podés arrancar todas las copias idénticas que quieras.

Las imágenes se comparten a través de un **registry**, una biblioteca de imágenes; **Docker Hub** es el público más conocido y las nubes ofrecen privados como Amazon ECR. Ahí está la utilidad: la misma imagen corre en una laptop, en un servidor de pruebas y en producción, así que "en mi máquina anda" deja de ser excusa. El formato de imagen hoy es un estándar abierto, así que las imágenes hechas con Docker también corren en Kubernetes y en otras herramientas que ni usan Docker.

## Una analogía

El Dockerfile es la receta, la imagen es la vianda congelada que sale de ella y cada contenedor es una porción calentada. Cualquier microondas la calienta igual.

## Para quedarse

- El Dockerfile es la receta, la imagen es el paquete, el contenedor es la copia que corre.
- Los registries como Docker Hub guardan y comparten imágenes.
- El formato de imagen es un estándar abierto, así que las imágenes corren también fuera de Docker.
- Docker es la herramienta; el contenedor es la idea general.

## Para seguir leyendo

- [What is Docker? (documentación oficial, en inglés)](https://docs.docker.com/get-started/docker-overview/)
- [Docker en Wikipedia](https://es.wikipedia.org/wiki/Docker_(software))

## Términos relacionados

- [Contenedor](https://tidbit.legios.com.ar/es/container/): Una caja cerrada con un programa y todo lo que necesita para correr en cualquier lado.
- [Linux](https://tidbit.legios.com.ar/es/linux/): Un sistema operativo libre y de código abierto que mueve la mayoría de los servidores.
- [Paquete](https://tidbit.legios.com.ar/es/packet/): El pedacito en que se corta cada dato de internet antes de viajar.
- [Amazon ECR](https://tidbit.legios.com.ar/es/amazon-ecr/): Un depósito privado en AWS para tus imágenes de contenedor, listas para desplegar.
- [Servidor](https://tidbit.legios.com.ar/es/server/): Una computadora cuyo trabajo es responder pedidos de otras computadoras, todo el día.
- [Estándar abierto](https://tidbit.legios.com.ar/es/open-standard/): Un reglamento técnico público que cualquiera puede seguir para que las marcas encajen.
- [Kubernetes](https://tidbit.legios.com.ar/es/kubernetes/): El sistema que corre y cuida contenedores en muchas máquinas a la vez.
