Práctica: Contenedores¶
Objetivo general¶
Comprender cómo ejecutar diferentes tipos de contenedores Docker y manipularlos con los comandos fundamentales:
run, pull, exec, logs, stop, rm, ps, images, rmi.
Contenedores que lanzaremos¶
- Linux Alpine o Ubuntu → contendor interactivo
- PostgreSQL o MySQL → base de datos real
- Nginx → servidor web estático
Cada uno enseña una habilidad distinta y no dependen entre sí.
Bloque 1 — Contenedor Linux (sistema operativo mínimo)¶
Ideal para practicar run -it, comandos dentro del contenedor y la idea de “entorno aislado”.
🔹 1. Descargar imagen¶
🔹 2. Lanzar contenedor interactivo¶
En este comando podemos ver los siguientes parámetros:
- -it: modo interactivo con terminal
- --name linux1: asigna el nombre “linux1” al contenedor
- ubuntu: imagen base
- sh: comando a ejecutar (shell)
Esto hace que entremos dentro del contenedor y podamos ejecutar comandos Linux.
🔹 3. Dentro del contenedor¶
🔹 4. Salir y comprobar que el contenedor sigue existiendo¶
Bloque 2 — Base de datos real¶
No conectan nada, simplemente ven cómo funciona un servicio dentro de un contenedor.
🔹 1. Descargar imagen¶
🔹 2. Ejecutar un PostgreSQL básico¶
En este comando encontramos:
- -d: modo “desapegado” (detached), el contenedor se ejecuta en segundo plano
- --name pg1: nombre del contenedor
- -e POSTGRES_PASSWORD=1234: variable de entorno para la contraseña del usuario
- -e POSTGRES_DB=practica: variable de entorno para crear una base de datos llamada “practica”
- -p 5432:5432: mapeo de puertos (host:contenedor)
- postgres:16: imagen base
🔹 3. Ver logs¶
Los logs nos muestran que PostgreSQL está funcionando y escuchando en el puerto 5432.
🔹 4. Entrar al intérprete SQL¶
Podemos entrar en el intérprete SQL de PostgreSQL mediante el comando docker exec -it para ejecutar comandos dentro del contenedor en ejecución.
Dentro pueden ejecutar:
Si queremos salir del intérprete SQL, usamos \q.
Podemos ver, si abrimos un gestor de bases de datos como DBeaver o pgAdmin, que la base de datos practica existe y contiene la tabla test con los datos insertados.
Bloque 3 — Servidor web (Nginx)¶
Ahora vamos a lanzar un servidor web estático con Nginx. Nginx es un servidor web muy popular y ligero.
🔹 1. Descargar e iniciar servidor web¶
El mecanismo es similar al de los otros contenedores anteriores.
🔹 2. Abrir navegador¶
Ir a:
Verán la página de bienvenida de Nginx.
🔹 3. Ver logs¶
🔹 4. Sustituir la página web dentro del contenedor¶
Con este comando entramos en el contenedor y modificamos la página web por defecto y podemos ver el cambio en el navegador.
Recargar navegador → cambia la página.
Bloque 4 — Gestión del ciclo de vida¶
Clásicos que deben practicar sí o sí.
🔹 1. Mostrar imágenes¶
🔹 2. Mostrar contenedores¶
🔹 3. Parar contenedores¶
🔹 4. Arrancarlos de nuevo¶
🔹 5. Borrar contenedores¶
🔹 6. Borrar imágenes (si procede)¶
Bloque 5 — Contenedores extra¶
** Un servidor Python ya preparado (sin programar, pero ven el backend funcionando)**¶
Imagen útil y simple: Python Flask de ejemplo
Lanzarlo:¶
Ahora abre en navegador:
Da una pequeña API que responde automáticamente.
Pueden entrar:
Un Portainer (GUI para gestionar Docker)¶
Lanzarlo:¶
Abrir en navegador:
Bloque 6 — Preguntas para reflexionar¶
- ¿Qué es una imagen?
- ¿Qué es un contenedor?
- ¿Qué diferencia hay entre “parar” y “eliminar”?
- ¿Qué comando usarías para ver los contenedores activos?
- ¿Cómo entrarías en un contenedor en ejecución?