docker run: flags esenciales
docker run: crear y arrancar un contenedor
Sección titulada «docker run: crear y arrancar un contenedor»docker run nginxEsto crea un contenedor nuevo a partir de la imagen nginx y lo arranca en primer plano — la terminal queda “pegada” mostrando los logs, y Ctrl+C lo detiene.
Flags del día a día
Sección titulada «Flags del día a día»| Flag | Qué hace |
|---|---|
-d | Detached — corre en segundo plano, devuelve el control a la terminal |
-p <host>:<contenedor> | Publica un puerto: mapea un puerto de la máquina host a un puerto del contenedor |
--name <nombre> | Nombre fijo para el contenedor (si no, Docker genera uno random tipo festive_curie) |
--rm | Borra el contenedor automáticamente al detenerse (útil para pruebas rápidas descartables) |
-e VAR=valor | Variable de entorno |
-v <origen>:<destino> | Monta un volumen o bind mount (ver Volúmenes) |
-it | Interactivo + tty — necesario para una sesión de shell interactiva dentro del contenedor |
Ejemplo combinado
Sección titulada «Ejemplo combinado»docker run -d \ --name mi-web \ -p 8080:80 \ -e NODE_ENV=production \ nginx-d: corre de fondo.--name mi-web: para referenciarlo después (docker logs mi-web,docker stop mi-web) en vez de un id random.-p 8080:80: el puerto 80 del contenedor (donde escucha nginx) queda accesible enlocalhost:8080de la máquina host.-e NODE_ENV=production: variable de entorno visible dentro del contenedor.
-p host:contenedor: el orden importa
Sección titulada «-p host:contenedor: el orden importa»docker run -p 8080:80 nginx# │ └─ puerto DENTRO del contenedor (el que la app "escucha")# └─ puerto en TU máquina (por el que accedes desde el navegador)Confundir el orden es un error común — localhost:8080 es lo que escribes en el navegador; 80 es el puerto que la app dentro del contenedor ya tiene fijo (no se puede cambiar sin tocar la config de la app).
Correr un shell interactivo dentro de un contenedor
Sección titulada «Correr un shell interactivo dentro de un contenedor»docker run -it ubuntu bashArranca un contenedor Ubuntu y entra directo a una sesión de bash dentro — útil para explorar una imagen o probar comandos antes de escribir un Dockerfile.
--rm: para pruebas descartables
Sección titulada «--rm: para pruebas descartables»docker run --rm -it node:20-alpine nodeCorre un REPL de Node dentro de un contenedor efímero — al salir (Ctrl+D), el contenedor se borra solo, sin dejar contenedores “muertos” acumulados que después haya que limpiar a mano.
Consideraciones
Sección titulada «Consideraciones»- Sin
-d, el contenedor queda “atado” a la terminal — cerrarla lo detiene. Para dejarlo corriendo de fondo indefinidamente, siempre-d. - Sin
--name, cadadocker rungenera un nombre random nuevo — cómodo para pruebas rápidas, pero para servicios que se van a referenciar seguido conviene nombrarlos.