En esta lección aprenderás a ejecutar un contenedor Docker con docker run: qué ocurre al iniciarlo, cómo comprobar su estado, limitar a localhost el acceso a un puerto publicado y retirarlo sin confundir el contenedor con la imagen o sus datos.
Usaremos Nginx para recorrer el ciclo completo: descargar la imagen si hace falta, crear y arrancar el contenedor, probar el servicio, revisar sus logs y limpiar el contenedor al terminar.
👉 Y recuerda, si quieres aprender más de Linux, visita el curso de Linux gratis.
🐳 Si quieres aprender más de Docker, visita el curso de Docker gratis.
Qué significa ejecutar un contenedor
Problema: una imagen Docker por sí sola no está ejecutándose. Es una plantilla. Para que haga algo necesitas crear un contenedor a partir de ella.
Qué aporta Docker: docker run crea un contenedor nuevo a partir de una imagen y arranca su proceso principal. Si la imagen no está en el equipo, Docker intenta descargarla. Para reanudar un contenedor que ya existe y está detenido se usa docker start; docker ps -a permite localizarlo.
| Opción | Para qué sirve |
|---|---|
| –name | Asigna un nombre único para identificarlo en comandos posteriores. |
| -d | Lo deja en segundo plano y devuelve el identificador. |
| -p | Publica un puerto; sin una IP de host, puede quedar accesible desde otras máquinas. |
| -it | Mantiene la entrada interactiva y asigna una terminal, útil para una shell. |
| –rm | Elimina el contenedor al salir; también se pierde su capa writable. |
Ejemplo práctico con Nginx
docker run -d --name web-demo -p 127.0.0.1:8080:80 nginx:stable-alpine
docker ps --filter "name=web-demo"
curl -I http://localhost:8080Docker descarga la imagen si hace falta, crea web-demo y mapea el puerto TCP 80 del contenedor al 8080 de la dirección local del equipo. Al indicar 127.0.0.1, limitas el acceso a localhost y evitas publicar el ejemplo en todas las interfaces del host. En Docker Engine anterior a la versión 28.0.0, la documentación advierte una excepción para equipos del mismo segmento de red; comprueba la versión si esta exposición local es sensible. El filtro de docker ps confirma que sigue activo y curl comprueba la respuesta HTTP.
Ejecutar un contenedor en modo interactivo
docker run --rm -it ubuntu:24.04 bash
cat /etc/os-release
exitLas opciones -i y -t mantienen la entrada abierta y crean una terminal. Al ejecutar exit termina el proceso principal y el contenedor se detiene; –rm lo elimina automáticamente. Los archivos guardados solo en la capa writable desaparecen al eliminarlo, por lo que los datos que deban persistir necesitan un volumen o bind mount.
Verificación y limpieza segura
docker ps
docker logs --tail 20 web-demo
docker stop web-demo
docker rm web-demo- docker ps: confirma que el contenedor está en ejecución; no muestra los contenedores detenidos.
- docker logs: muestra la salida estándar y los errores que el proceso haya enviado a los logs.
- docker stop: detiene el contenedor de forma ordenada.
- docker rm: elimina el contenedor detenido; la imagen permanece disponible para crear otro.
Si el contenedor se detiene
Un contenedor permanece activo mientras siga activo su proceso principal. Si docker ps no lo muestra, consulta docker ps -a para comprobar si terminó o falló. Revisa después docker logs web-demo y el estado del contenedor con docker inspect: los logs ayudan a encontrar errores de configuración, dependencias ausentes o fallos al iniciar el servicio. Reiniciar a ciegas puede repetir el mismo fallo sin explicar su causa.
Errores comunes
- Confundir imagen y contenedor: la imagen es la plantilla; el contenedor es la ejecución.
- Confundir EXPOSE con una publicación: declarar el puerto en una imagen no crea el mapeo; docker run necesita -p para publicarlo.
- No poner nombre: Docker genera uno aleatorio y luego cuesta practicar comandos.
- Publicar todos los puertos en una prueba local: -p 8080:80 puede escuchar en las direcciones del host; si solo necesitas acceso local, limita el enlace a 127.0.0.1.
- Usar -f para borrar sin pensar: fuerza la eliminación y puede cortar el proceso sin permitir un cierre limpio.
Antes de limpiar: docker run crea un contenedor nuevo y puede descargar una imagen o publicar puertos. Comprueba el nombre y el estado antes de eliminarlo; si necesitas conservar datos, guárdalos en un volumen o bind mount, no solo en la capa writable.
Lecciones relacionadas del curso
- Creando tu primer contenedor
- Cómo listar contenedores
- Cómo detener contenedores
- Cómo eliminar contenedores
- Qué es un volumen Docker

