Ejecutando Contenedores desde Imágenes
Ahora que ha descargado algunas imágenes de Docker, aprendamos a crear y ejecutar contenedores basados en estas imágenes.
Ejecutando un Contenedor Básico
Para ejecutar un contenedor desde una imagen, use el comando docker run:
docker run ubuntu echo "Hello from Docker"
Este comando:
- Crea un nuevo contenedor basado en la imagen de Ubuntu
- Ejecuta el comando
echo "Hello from Docker" dentro del contenedor
- Sale después de que el comando se completa
Debería ver la salida:
Hello from Docker
Ejecutando un Contenedor Interactivo
Para interactuar con un contenedor, use las flags -it (terminal interactivo):
docker run -it ubuntu bash
Esto inicia un shell bash dentro del contenedor. Ahora está efectivamente "dentro" del contenedor y puede ejecutar comandos.
Pruebe algunos comandos:
ls
cat /etc/os-release
Para salir del contenedor, escriba:
exit
Listando Contenedores en Ejecución
Para ver todos los contenedores en ejecución:
docker ps
Dado que nuestros contenedores salieron inmediatamente después de la finalización, es posible que no vea ninguna salida. Para ver todos los contenedores, incluidos los detenidos:
docker ps -a
Esto muestra todos los contenedores, su estado y cuándo fueron creados/salieron.
Ciclo de Vida del Contenedor
Los contenedores tienen un ciclo de vida:
- Creado (Created): El contenedor se crea pero no se inicia
- En ejecución (Running): El contenedor se está ejecutando actualmente
- Pausado (Paused): La ejecución del contenedor está pausada
- Detenido (Stopped): El contenedor ha salido pero aún existe
- Eliminado (Removed): El contenedor se elimina
Puede eliminar un contenedor detenido con:
docker rm <container_id>
Reemplace <container_id> con el ID que se muestra en la salida de docker ps -a.
Para eliminar automáticamente un contenedor después de que salga, use la flag --rm:
docker run --rm ubuntu echo "This container will be removed after execution"
Ejecutando un Contenedor de Servidor Web
Intentemos algo más práctico ejecutando un servidor web Nginx:
docker pull nginx:alpine
Esto descarga una imagen ligera de Nginx basada en Alpine Linux.
Ahora, ejecute un contenedor que mapea el puerto 8080 en su host al puerto 80 en el contenedor:
docker run -d -p 8080:80 --name my-nginx nginx:alpine
Este comando:
-d: Ejecuta el contenedor en modo desasociado (background)
-p 8080:80: Mapea el puerto 8080 en su host al puerto 80 en el contenedor
--name my-nginx: Nombra el contenedor "my-nginx"
Ahora puede acceder a la página de bienvenida de Nginx navegando a http://localhost:8080 en un navegador web, o usando curl:
curl http://localhost:8080
Debería ver el contenido HTML de la página de bienvenida de Nginx.
Para detener y eliminar este contenedor:
docker stop my-nginx
docker rm my-nginx