En esta lección aprenderás los comandos fundamentales que usarás cada día al trabajar con Docker. Hasta ahora hemos entendido qué es Docker y cómo funciona por dentro; ha llegado el momento de tomar el control desde la terminal. Veremos la estructura general de cualquier comando de Docker y, después, los comandos esenciales para ejecutar contenedores, listarlos, gestionar imágenes, ver registros y entrar en un contenedor en marcha. Dominar estos comandos te dará autonomía total para experimentar y avanzar con confianza en el resto del curso.

Objetivos de Aprendizaje

  • Comprender la estructura general de un comando de Docker.
  • Ejecutar contenedores con docker run y sus opciones más útiles.
  • Listar contenedores e imágenes con docker ps y docker images.
  • Descargar imágenes con docker pull.
  • Detener y eliminar contenedores con docker stop y docker rm.
  • Eliminar imágenes con docker rmi.
  • Inspeccionar registros con docker logs y entrar en un contenedor con docker exec.

La Estructura General de un Comando Docker

Casi todos los comandos de Docker siguen el mismo patrón. Conocerlo te ayudará a entender cualquier comando, incluso los que aún no hayas visto.

docker [OBJETO] COMANDO [OPCIONES] [ARGUMENTOS]
  • docker: el programa principal (la CLI).
  • [OBJETO]: el tipo de objeto sobre el que actúas (container, image, network, volume…). En muchos comandos clásicos es opcional.
  • COMANDO: la acción a realizar (run, ps, pull, stop…).
  • [OPCIONES]: modificadores que empiezan por - (forma corta) o -- (forma larga), como -d o --name.
  • [ARGUMENTOS]: datos adicionales, como el nombre de la imagen o del contenedor.

Por ejemplo, estos dos comandos son equivalentes:

docker run nginx
docker container run nginx
  • La primera forma es la "clásica" y más breve.
  • La segunda es la forma "explícita" con el objeto (container). Hace lo mismo, pero deja más claro sobre qué actúas.

En esta lección usaremos sobre todo la forma clásica, que es la más común en el día a día.

docker run: Ejecutar un Contenedor

docker run es el comando que más usarás. Crea un contenedor a partir de una imagen y lo arranca.

docker run nginx
  • docker run: crea y arranca un contenedor.
  • nginx: la imagen a usar. Si no está en tu máquina, Docker la descarga automáticamente de Docker Hub.

Este comando "ocupa" tu terminal mientras el contenedor se ejecuta. Para liberarla y dejarlo corriendo en segundo plano, usa el modo detached (-d):

docker run -d --name servidor_web -p 8080:80 nginx
  • -d: modo detached (segundo plano). Te devuelve el control de la terminal de inmediato.
  • --name servidor_web: asigna un nombre legible al contenedor. Si no lo indicas, Docker le pone uno aleatorio.
  • -p 8080:80: publica el puerto. Mapea el puerto 8080 de tu máquina al 80 del contenedor, de modo que puedas acceder en http://localhost:8080.
  • nginx: la imagen.

docker ps: Listar Contenedores

docker ps muestra los contenedores en ejecución.

docker ps
  • Lista solo los contenedores activos, con su ID, imagen, estado, puertos y nombre.

Para ver todos los contenedores, incluidos los detenidos:

docker ps -a
  • -a (o --all): muestra también los contenedores parados. Muy útil para encontrar contenedores que terminaron o fallaron.

docker images: Listar Imágenes

docker images muestra las imágenes descargadas en tu máquina.

docker images
  • Lista cada imagen con su repositorio, tag (etiqueta de versión), ID y tamaño.
  • Te ayuda a saber qué imágenes tienes disponibles localmente y cuánto espacio ocupan.

docker pull: Descargar una Imagen

docker pull descarga una imagen del registro sin ejecutarla todavía.

docker pull postgres:16
  • docker pull: descarga la imagen indicada.
  • postgres:16: el nombre de la imagen (postgres) y su tag (16, la versión). Si omites el tag, Docker descarga la etiqueta latest.

Descargar la imagen por adelantado es útil, por ejemplo, para tenerla lista antes de quedarte sin conexión.

docker stop: Detener un Contenedor

docker stop detiene de forma ordenada un contenedor en ejecución.

docker stop servidor_web
  • docker stop: envía una señal para que el contenedor se detenga limpiamente.
  • servidor_web: el nombre (o el ID) del contenedor que quieres detener.

A diferencia de eliminarlo, detener un contenedor no lo borra: sigue existiendo y puedes volver a arrancarlo con docker start servidor_web.

docker rm: Eliminar un Contenedor

docker rm elimina un contenedor (normalmente, uno ya detenido).

docker rm servidor_web
  • docker rm: borra el contenedor de forma permanente.
  • servidor_web: el contenedor a eliminar.

Si el contenedor sigue en marcha, primero deténlo o fuerza el borrado:

docker rm -f servidor_web
  • -f (o --force): fuerza la eliminación deteniendo el contenedor primero. Úsalo con cuidado.

docker rmi: Eliminar una Imagen

docker rmi elimina una imagen de tu máquina para liberar espacio.

docker rmi nginx
  • docker rmi: borra la imagen indicada (rmi = remove image).
  • nginx: la imagen a eliminar.

No podrás borrar una imagen si algún contenedor (aunque esté detenido) todavía depende de ella; primero elimina esos contenedores.

docker logs: Ver los Registros de un Contenedor

docker logs muestra la salida (los logs) que ha producido un contenedor. Es tu principal herramienta para saber qué está haciendo o por qué falla.

docker logs servidor_web
  • Muestra todo lo que el contenedor ha escrito en su salida estándar.

Para seguir los registros en tiempo real:

docker logs -f servidor_web
  • -f (o --follow): mantiene la salida abierta y muestra las nuevas líneas a medida que aparecen, como un tail -f. Pulsa Ctrl+C para salir.

docker exec: Ejecutar un Comando Dentro de un Contenedor

docker exec ejecuta un comando dentro de un contenedor que ya está en marcha. Su uso más habitual es abrir una terminal interactiva dentro del contenedor para inspeccionarlo.

docker exec -it servidor_web sh
  • docker exec: ejecuta un comando en un contenedor en ejecución.
  • -it: combinación de dos opciones. -i (interactivo) mantiene la entrada abierta y -t asigna una terminal (TTY). Juntas te dan una shell usable.
  • servidor_web: el contenedor de destino.
  • sh: el comando a ejecutar (en este caso, abrir una shell). En imágenes que lo incluyan, puedes usar bash.

Una vez dentro, podrás moverte por el sistema de ficheros del contenedor, revisar archivos de configuración, etc. Escribe exit para salir.

Tabla Resumen de Comandos

Comando Qué hace Ejemplo
docker run Crea y arranca un contenedor docker run -d --name web nginx
docker ps Lista contenedores en ejecución (-a, todos) docker ps -a
docker images Lista las imágenes locales docker images
docker pull Descarga una imagen del registro docker pull postgres:16
docker stop Detiene un contenedor en marcha docker stop web
docker rm Elimina un contenedor (-f, forzado) docker rm web
docker rmi Elimina una imagen local docker rmi nginx
docker logs Muestra los registros (-f, en vivo) docker logs -f web
docker exec Ejecuta un comando en un contenedor en marcha docker exec -it web sh

Errores Comunes y Consejos

  • No ver un contenedor detenido con docker ps: docker ps solo muestra los activos. Usa docker ps -a para ver también los parados.
  • Confundir rm con rmi: rm elimina contenedores; rmi elimina imágenes. Recuerda que la "i" final es de image.
  • No poder borrar una imagen en uso: si hay contenedores que dependen de ella (aunque estén detenidos), Docker no la borra. Elimina primero esos contenedores.
  • Olvidar -d y bloquear la terminal: sin -d, el contenedor "ocupa" la terminal. Si solo querías dejarlo corriendo, usa el modo detached.
  • Usar exec en un contenedor detenido: docker exec solo funciona con contenedores en ejecución. Si está parado, arráncalo primero.
  • Consejo: puedes referirte a contenedores e imágenes por su ID, y basta con escribir los primeros caracteres si son suficientes para identificarlo de forma única (por ejemplo, docker stop a1b2).

Ejercicios

Ejercicio 1

Descarga la imagen de nginx, arráncala en segundo plano con el nombre mi_web publicando el puerto 8080 del host hacia el 80 del contenedor y, después, comprueba que aparece en la lista de contenedores activos.

Ejercicio 2

Tienes un contenedor llamado mi_web en marcha. Muestra sus registros en tiempo real y, en otra terminal, abre una shell interactiva dentro de él.

Ejercicio 3

Detén el contenedor mi_web, elimínalo y, por último, borra la imagen nginx de tu máquina. Indica el orden correcto y por qué importa.

Soluciones

Solución 1

docker pull nginx
docker run -d --name mi_web -p 8080:80 nginx
docker ps

docker pull descarga la imagen; docker run -d la arranca en segundo plano con nombre y mapeo de puerto; docker ps confirma que el contenedor mi_web está activo. Podrás comprobarlo también abriendo http://localhost:8080.

Solución 2

docker logs -f mi_web

En otra terminal:

docker exec -it mi_web sh

docker logs -f muestra los registros en vivo (sal con Ctrl+C); docker exec -it ... sh abre una shell interactiva dentro del contenedor (sal con exit).

Solución 3

docker stop mi_web
docker rm mi_web
docker rmi nginx

El orden importa: primero detenemos el contenedor, luego lo eliminamos y solo entonces podemos borrar la imagen. Docker no permite eliminar una imagen mientras exista un contenedor que dependa de ella, aunque ese contenedor esté detenido.

Conclusión

En esta lección hemos aprendido la estructura general de un comando de Docker y los comandos esenciales del día a día: run para crear y arrancar contenedores, ps e images para listar, pull para descargar imágenes, stop y rm para detener y eliminar contenedores, rmi para borrar imágenes, logs para ver registros y exec para entrar en un contenedor en marcha. Con esta caja de herramientas ya puedes manejar contenedores con soltura.

En la siguiente lección, Entendiendo las Imágenes de Docker, profundizaremos en el concepto de imagen: qué es exactamente, cómo se organiza en capas, su relación con los contenedores, el papel de los tags y cómo inspeccionarla con docker image inspect y docker history.

© Copyright 2026. Todos los derechos reservados