Volver a herramientas
Opciones comunes de docker run
- -d, --detach: Ejecutar en background
- --rm: Eliminar contenedor al salir
- -p host:container: Mapear puertos
- -v host:container: Montar volúmenes
- -e KEY=VALUE: Variables de entorno
- --name: Nombre del contenedor
- --network: Red a utilizar
- --restart: Política de reinicio (always, on-failure)
- -u: Usuario (UID:GID)
- -w: Directorio de trabajo
- --memory: Límite de memoria
- --cpus: Límite de CPU
Preguntas frecuentes
¿Cómo ejecutar un contenedor Nginx con docker run mapeando puertos y volúmenes?
Para ejecutar Nginx con docker run: `docker run -d --name nginx-web -p 80:80 -p 443:443 -v /host/html:/usr/share/nginx/html:ro -v /host/nginx.conf:/etc/nginx/nginx.conf:ro nginx:alpine`. El flag `-d` ejecuta en segundo plano, `-p 80:80` mapea el puerto 80 del host al 80 del contenedor, `-v` monta directorios locales como volúmenes con opción `:ro` para solo lectura, y `--name` asigna un nombre identificable. La imagen nginx:alpine es más ligera que la oficial.
¿Cómo configurar variables de entorno al hacer docker run para PostgreSQL?
Para ejecutar PostgreSQL con docker run: `docker run -d --name postgres-db -e POSTGRES_USER=admin -e POSTGRES_PASSWORD=secreto -e POSTGRES_DB=miapp -p 5432:5432 -v pgdata:/var/lib/postgresql/data postgres:16-alpine`. Las variables `-e` configuran el usuario, contraseña y base de datos inicial. Usa un volumen nombrado (`pgdata`) en lugar de bind mount para que Docker gestione la persistencia. Añade `--restart unless-stopped` para reinicio automático.
Diferencia entre docker run -d y -it ¿cuándo usar cada uno?
`docker run -d` (detached) ejecuta el contenedor en segundo plano y devuelve el ID del contenedor inmediatamente. Ideal para servidores y servicios como Nginx, PostgreSQL o Redis que deben correr de fondo. `docker run -it` (interactive + TTY) mantiene la sesión abierta para interactuar con el contenedor, como un shell (`docker run -it ubuntu bash`). Para tareas rápidas usa `--rm` para eliminar el contenedor al salir. Puedes combinar ambos paradigmas: iniciar con -d y luego ejecutar `docker exec -it contenedor bash`.
¿Cómo limitar memoria y CPU de un contenedor con docker run?
Para limitar recursos con docker run: `docker run -d --memory=512m --memory-reservation=256m --cpus=1.5 --cpuset-cpus=0-1 nginx`. `--memory` limita el máximo de RAM (512 MB), `--memory-reservation` establece un mínimo reservado. `--cpus` limita el uso de CPU (1.5 núcleos) y `--cpuset-cpus` restringe a núcleos físicos específicos. Docker usa grupos de control (cgroups) del kernel Linux para aplicar estos límites. Sin estas opciones un contenedor puede consumir todos los recursos del host.