Contenido
Tutorial de comandos de Docker: guía rápida para trabajar con contenedores e imágenes
Esta página reúne los comandos de Docker más usados a diario y se basa en Docker 29. Para ver la explicación detallada y la salida real de cada comando, selecciona el enlace de su sección. La última sección reúne los errores frecuentes detectados al probar este tutorial.
Contenedores
| Comando | Descripción |
|---|---|
docker run -d --name web -p 8080:80 nginx:1.30 | Ejecutar un contenedor en segundo plano y asignar un puerto |
docker run -it --rm ubuntu:26.04 bash | Ejecutarlo de forma interactiva y eliminarlo automáticamente al terminar |
docker ps | Mostrar los contenedores en ejecución |
docker ps -a | Mostrar todos los contenedores |
docker stop web | Detener un contenedor |
docker start web | Iniciar un contenedor detenido |
docker restart web | Reiniciar un contenedor |
docker rm web | Eliminar un contenedor detenido |
docker rm -f web | Forzar la eliminación de un contenedor en ejecución |
docker logs -f web | Seguir los registros del contenedor |
docker logs --tail 100 web | Mostrar las últimas 100 líneas de los registros |
docker exec -it web sh | Abrir el shell del contenedor |
docker cp web:/path/file . | Copiar un archivo del contenedor al host |
docker inspect web | Consultar los detalles del contenedor |
docker stats | Ver el uso de recursos en tiempo real |
docker top web | Mostrar los procesos del contenedor |
docker port web | Consultar la asignación de puertos |
docker update --restart unless-stopped web | Cambiar la política de reinicio |
docker run --init ... | Usar un init pequeño como PID 1 para reenviar correctamente las señales de detención |
Más información: Opciones de docker run, Ciclo de vida de los contenedores, Consultar registros y depurar
Imágenes
| Comando | Descripción |
|---|---|
docker images | Mostrar las imágenes locales |
docker images --tree | Mostrar las plataformas incluidas en imágenes multiplataforma |
docker pull nginx:1.30 | Descargar una imagen |
docker tag myapp user/myapp:1.0 | Añadir un nombre o una etiqueta |
docker push user/myapp:1.0 | Enviar la imagen a un Registry |
docker rmi nginx:1.30 | Eliminar una imagen |
docker history nginx:1.30 | Consultar las capas |
docker buildx imagetools inspect nginx:1.30-alpine | Consultar las plataformas compatibles con una imagen remota |
docker save -o img.tar myapp | Exportar a un archivo |
docker load -i img.tar | Importar desde un archivo |
docker login / docker logout | Iniciar sesión / cerrar sesión en un Registry |
Más información: Imágenes, Enviar una imagen a Docker Hub
Compilación
| Comando | Descripción |
|---|---|
docker build -t myapp . | Construir una imagen con el Dockerfile de la carpeta actual |
docker build -f Dockerfile.prod -t myapp . | Especificar el Dockerfile |
docker build --no-cache -t myapp . | No usar la caché |
docker build --pull -t myapp . | Volver a descargar la imagen base |
docker build --target dev -t myapp:dev . | Construir solo hasta una etapa concreta |
docker build --build-arg VERSION=1.2 . | Pasar un argumento de compilación (no lo uses para pasar contraseñas) |
docker build --secret id=token,env=TOKEN . | Pasar un secreto para la compilación; no quedará en la imagen |
docker build --progress plain . | Mostrar toda la salida de la compilación |
docker buildx build --platform linux/amd64,linux/arm64 -t user/app --push . | Construir para varias plataformas y enviar la imagen |
Más información: Referencia de instrucciones de Dockerfile, Caché de compilación y optimización, Compilaciones multietapa, Imágenes multiplataforma
Volume
| Comando | Descripción |
|---|---|
docker volume create data | Crear un Volume |
docker volume ls | Mostrar los Volume |
docker volume inspect data | Consultar los detalles |
docker volume rm data | Eliminar un Volume |
docker run -v data:/app/data myapp | Montar un Volume con nombre |
docker run -v "$(pwd):/app" myapp | Montar la carpeta actual |
Más información: Volume y persistencia de datos
Redes
| Comando | Descripción |
|---|---|
docker network create appnet | Crear una red personalizada |
docker network ls | Mostrar las redes |
docker network inspect appnet | Consultar los contenedores de la red |
docker run --network appnet --name db postgres:18 | Conectar un contenedor a la red |
docker network connect appnet web | Conectar un contenedor en ejecución a la red |
docker network rm appnet | Eliminar una red |
Más información: Redes y comunicación entre contenedores
Docker Compose
| Comando | Descripción |
|---|---|
docker compose up -d | Iniciar todos los servicios en segundo plano |
docker compose up -d --build | Reconstruir y luego iniciar los servicios |
docker compose up -d --wait | Esperar a que todos los servicios estén healthy antes de terminar |
docker compose up -d app | Actualizar o reconstruir un solo servicio |
docker compose down | Detener y eliminar los contenedores y las redes |
docker compose down -v | Eliminar también los Volume |
docker compose ps | Consultar el estado de los servicios |
docker compose logs -f app | Seguir los registros de un servicio |
docker compose exec app sh | Abrir el contenedor del servicio |
docker compose run --rm app npm test | Ejecutar un comando puntual |
docker compose pull | Descargar las imágenes más recientes |
docker compose restart app | Reiniciar el servicio (no aplica los cambios de configuración) |
docker compose watch | Sincronizar o reconstruir automáticamente cuando cambien los archivos (para desarrollo) |
docker compose --profile tools up -d | Iniciar también los servicios del perfil |
docker compose config | Comprobar la configuración final |
Más información: Introducción a Docker Compose, Comandos de docker compose
Limpieza
| Comando | Descripción |
|---|---|
docker system df | Consultar el espacio utilizado |
docker container prune | Eliminar los contenedores detenidos |
docker image prune -a | Eliminar las imágenes sin usar |
docker builder prune | Limpiar la caché de compilación |
docker builder prune --filter until=168h | Limpiar solo la caché de compilación que no se ha usado en más de 7 días |
docker volume prune | Eliminar los Volume anónimos sin usar |
docker volume prune -a | Eliminar todos los Volume sin usar, incluidos los datos de bases de datos con nombre |
docker system prune | Limpiar varios recursos (sin incluir Volume) |
docker system prune --volumes | Limpiar varios recursos y añadir los Volume anónimos (desde Docker 23 no incluye los Volume con nombre) |
Más información: Liberar espacio en disco
Información del sistema
| Comando | Descripción |
|---|---|
docker version | Versiones del cliente y del servidor |
docker info | Información del sistema Docker |
docker events | Eventos en tiempo real |
docker context ls | Mostrar los entornos Docker a los que puedes conectarte |
Resumen de opciones frecuentes
| Opción | Significado |
|---|---|
-d | Ejecutar en segundo plano |
-it | Modo interactivo + terminal |
-p host:contenedor | Asignación de puertos |
-v origen:ruta-en-contenedor | Montaje |
-e KEY=VALUE | Variable de entorno |
--name | Nombre del contenedor |
--rm | Eliminar automáticamente al terminar |
--network | Especificar la red |
--restart | Política de reinicio |
-f | Forzar (rm, rmi) o seguir (logs) |
Errores frecuentes (detectados al probar este tutorial)
| Síntoma | Causa y solución | Sección |
|---|---|---|
docker stop tarda 10 segundos | El programa es PID 1 y no procesa SIGTERM. Procésala en el programa o añade --init | Aplicación Node.js |
Al usar el nombre de contenedor web, la conexión va a 127.0.53.53 | .web es un dominio de nivel superior y el nombre se resuelve como un dominio externo. Usa otro nombre | Opciones de docker run |
postgres:18 se cierra al iniciarse | La versión 18 requiere montar /var/lib/postgresql, no /var/lib/postgresql/data | PostgreSQL |
| Se informa que la base de datos está healthy antes de estar lista | Añade -h 127.0.0.1 a pg_isready y mysqladmin ping | MySQL, PostgreSQL |
| La comprobación de estado sigue pasando aunque la contraseña de Redis sea incorrecta | Cuando redis-cli ping falla, el código de salida sigue siendo 0; añade | grep -q PONG | Redis |
Cambiar MYSQL_ROOT_PASSWORD no tiene efecto | La variable de contraseña solo se usa durante la inicialización inicial | MySQL |
| El archivo de configuración cambió, pero el contenedor sigue teniendo la versión antigua | Al montar un solo archivo, el editor lo reemplaza al guardar. Reinicia el contenedor o monta la carpeta | Nginx |
Los valores de --env-file incluyen comillas | docker run --env-file no quita las comillas; env_file de Compose sí | Variables de entorno |
El secreto eliminado con rm sigue en la imagen | Cada capa conserva el contenido; ARG y ENV también son visibles. Usa --secret | Prácticas recomendadas de seguridad |
exec format error | La arquitectura de CPU no coincide; usa --platform o una compilación multiplataforma | Imágenes multiplataforma |
Preguntas frecuentes
¿Qué hago si no consigo recordar tantos comandos?
Empieza por recordar run, ps, logs, exec, stop, rm, build y compose up/down; cuando necesites los demás, consulta esta página o docker comando --help.
¿Dónde encuentro todos los parámetros de cada comando?
Encontrarás los parámetros completos y ejemplos de los comandos más usados en la categoría «Referencia de comandos», por ejemplo, [docker build](/es/docker/docker-build/) y [docker ps](/es/docker/docker-ps/).
Actualizado 14 de octubre de 2026