docker
Corre aplicaciones dentro de contenedores aislados y fáciles de mover.
Corre programas dentro de contenedores: cajas aisladas que traen la aplicación con todo lo que necesita, así funciona igual en tu laptop que en un servidor. Lo usas para levantar bases de datos, sitios web o herramientas sin instalarlas directamente en el sistema. No viene instalado: en Debian y Ubuntu, sudo apt install docker.io (o la versión oficial de docker.com).
docker COMANDO [opciones]docker rm -f, docker system prune y docker volume rm borran contenedores y datos sin pedir confirmación; los datos de un volumen borrado no se recuperan. Y agregar tu usuario al grupo docker equivale a darle acceso de root al equipo.
Despiece
6 ejemplosVer qué contenedores corren
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | docker | Comando | La herramienta de contenedores. |
| 2 | ps | Valor | Lista los contenedores en ejecución. |
Una línea por contenedor con su ID, imagen, estado (Up 3 hours) y puertos. Agrega -a para ver también los detenidos. Si responde permission denied, usa sudo o pertenece al grupo docker.
Levantar un servidor web
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | docker | Comando | La herramienta de contenedores. |
| 2 | run | Valor | Crea y arranca un contenedor. |
| 3 | -d | Opción | En segundo plano: te devuelve la terminal. |
| 4 | --name | Opción | Le pone nombre al contenedor. |
| 5 | web | Valor | El nombre, para referirte a él después. |
| 6 | -p | Opción | Conecta un puerto de tu equipo con uno del contenedor. |
| 7 | 8080:80 | Valor | El 8080 de tu equipo va al 80 del contenedor: primero el tuyo, luego el de adentro. |
| 8 | nginx | Argumento | La imagen: un servidor web listo para usarse. |
Docker descarga la imagen la primera vez y arranca nginx. Abres http://localhost:8080 y ves la página de bienvenida. El contenedor sigue corriendo hasta que lo detengas.
Ver los mensajes de un contenedor
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | docker | Comando | La herramienta de contenedores. |
| 2 | logs | Valor | Muestra lo que imprimió el contenedor. |
| 3 | -f | Opción | Sigue mostrando los mensajes nuevos en vivo. |
| 4 | web | Valor | El nombre del contenedor. |
Ves los registros de nginx y los nuevos aparecen conforme llegan, como con tail -f. Sales con Ctrl+C; el contenedor sigue corriendo.
Entrar a un contenedor
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | docker | Comando | La herramienta de contenedores. |
| 2 | exec | Valor | Ejecuta un comando dentro de un contenedor que ya corre. |
| 3 | -it | Opción | i mantiene la entrada abierta y t te da una terminal: juntas permiten trabajar adentro. |
| 4 | web | Valor | El contenedor donde entras. |
| 5 | bash | Argumento | El programa que corres adentro: una terminal. |
Quedas en una terminal dentro del contenedor, con sus archivos. Sales con exit y el contenedor sigue corriendo. Si la imagen no trae bash, usa sh.
Detener y borrar un contenedor
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | docker | Comando | La herramienta de contenedores. |
| 2 | stop | Valor | Detiene el contenedor de forma ordenada. |
| 3 | web | Valor | El contenedor que detienes. |
| 4 | && | Operador | Solo si se detuvo bien, sigue con lo siguiente. |
| 5 | docker | Comando | La herramienta de contenedores. |
| 6 | rm | Valor | Borra el contenedor detenido. |
| 7 | web | Valor | El contenedor que borras. |
El contenedor se detiene y desaparece. La imagen nginx se queda descargada para la próxima vez. Lo que había dentro del contenedor se pierde, salvo que estuviera en un volumen.
Levantar un proyecto completo
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | docker | Comando | La herramienta de contenedores. |
| 2 | compose | Valor | Maneja varios contenedores definidos en un archivo compose.yaml. |
| 3 | up | Valor | Crea y arranca todo lo que describe el archivo. |
| 4 | -d | Opción | En segundo plano. |
Lee el compose.yaml (o docker-compose.yml) de la carpeta actual y levanta todos sus servicios, por ejemplo una app y su base de datos. Lo detienes con docker compose down.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| run | Crea y arranca un contenedor a partir de una imagen. Si no tienes la imagen, la descarga. |
| ps | Lista los contenedores que están corriendo; con -a incluye los detenidos. |
| logs | Muestra lo que ha impreso un contenedor. Con -f lo sigues en vivo. |
| exec | Ejecuta un comando dentro de un contenedor que ya está corriendo. |
| stop | Detiene un contenedor de forma ordenada. |
| rm | Borra un contenedor detenido. Con -f también uno que esté corriendo. |
| images | Lista las imágenes descargadas y cuánto ocupan. |
| compose | Levanta varios contenedores juntos a partir de un archivo compose.yaml: docker compose up -d. |
Fallas comunes
| Falla | Remedio |
|---|---|
| permission denied while trying to connect to the Docker daemon socket. | Tu usuario no tiene permiso para hablar con Docker. Usa sudo, o agrégate al grupo con sudo usermod -aG docker $USER y vuelve a iniciar sesión. Ten en cuenta que ese grupo da poder de root. |
| Port is already allocated al usar -p. | Ese puerto de tu equipo ya lo usa otro programa o contenedor. Elige otro (-p 8081:80) o revisa quién lo ocupa con sudo ss -tlnp | grep 8080. |
| Perder los datos al borrar el contenedor. | Lo que se guarda dentro del contenedor se va con él. Para datos que deben durar, como una base de datos, usa un volumen: -v datos:/var/lib/postgresql/data. |
| Invertir los puertos: -p 80:8080. | El orden es tu-equipo:contenedor. Si nginx escucha en el 80 del contenedor y quieres verlo en el 8080 de tu equipo, es -p 8080:80. |
Preguntas frecuentes
- ¿Qué es Docker y para qué sirve?
- Es una herramienta para correr aplicaciones en contenedores: cajas aisladas que traen el programa con todo lo que necesita. Sirve para instalar y mover servicios sin pelearte con dependencias, y para que funcionen igual en cualquier equipo.
- ¿Cuál es la diferencia entre una imagen y un contenedor?
- La imagen es la plantilla, como un instalador; el contenedor es una copia de esa imagen corriendo. De una misma imagen puedes crear muchos contenedores.
- ¿Cómo uso docker sin sudo?
- Agrega tu usuario al grupo docker: sudo usermod -aG docker $USER, y cierra y vuelve a abrir tu sesión. Hazlo solo en equipos de confianza: pertenecer a ese grupo equivale a tener permisos de root.
- ¿Cómo veo los contenedores detenidos?
- Con docker ps -a. Sin -a solo salen los que están corriendo.
- ¿Cuál es la diferencia entre docker compose y docker-compose?
- Hacen lo mismo. docker compose (con espacio) es la versión actual, integrada en docker; docker-compose (con guion) es la versión vieja que se instalaba aparte.