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.