Reto1
– Crear un contenedor docker de ubuntu.
– Instalar python, la libreria request y de mysql
– Crear una imgane personalizada con el contenedor
Reto 2
- Crear un contenedor nuevo con la imagen personalizada de docker
- Este contenedor tendra un volumen con una ruta en el disco del anfitrión (Bind)
Reto 3
- Crear un repositorio git en la carpeta del anfitrión y unirlo con un repositorio en Github
Reto 4
- Crear un contenedor mysql.
- Crear una base de datos, para almacenar Coches. Los campos seran id, marca, modelo, color, km y precio
- añadir almenos 10 coches a modo de contenido de muestra.
Reto 5
- Crear en el repositorio Local un programa en python que se conecte a la base de datos y obtenga los registros de la mase de datos.
– El programa debe listar los datos de los coches guardados en la base de datos de forma estetica.
ID MARCA MODELO COLOR KM PRECIO
————————————————————————
1 Toyota Corolla Blanco 20000 15000
2 Honda Civic Rojo 30000 17000
3 Ford Focus Azul 25000 16000
Reto 6
- Almacenar los datos de conexion a la base de datos en un archivo JSON y que el programa Python los lea de dicho archivo.
* crear un nuevo archivo para la modificación.
* Realiza un commit en cada paso - crear el .gitignore para que no suba el archivo con los datos de conexión.
Reto 7
Formatear la tabla para que quede mas estetica con la libreria
+—-+——–+———+——-+————-+——–+
| ID | Marca | Modelo | Color | Kilometraje | Precio |
+—-+——–+———+——-+————-+——–+
| 1 | Toyota | Corolla | Rojo | 25000 | 15000 |
| 2 | Honda | Civic | Azul | 30000 | 18000 |
| 3 | Ford | Focus | Blanco| 40000 | 17000 |
+—-+——–+———+——-+————-+——–+
Reto 8
Crear un conetenedor Mongo y conectarse desde la terminal y utilizando MongoDB
Crea la una bd e inserta en una colecci’on coches con el criterio de de campos del reto anterior
Crear un Script de Python para leer los datos de colecciones de MongoDB y los imprima en una tabla.
Reto 9
Subir una imagen personaliza de nuestro contenedor mongodb al hub de Docker.
En el Linux Parrot montar un contenedor con la imagen subida al hub.
Documento de ayuda y pistas para los retos
🚀 RETO 1 — Tu primer contenedor personalizado
Objetivo
Crear un contenedor Ubuntu con Python y librerías necesarias, y convertirlo en una imagen reutilizable.
Pistas
Según la guía visual del PDF (pág. 1), debes:
- Ejecutar un contenedor Ubuntu
- Instalar:
- python3
- pip
- requests
- cliente MySQL
Después crea una imagen personalizada con:
docker commit <contenedor> mi-imagen-personalizada
✅ Checkpoint
Debes poder ver tu imagen con:
docker images
🚀 RETO 2 — Persistencia con Bind Mount
Objetivo
Crear un nuevo contenedor usando la imagen anterior y asociarlo a una carpeta del host.
📌 En la página 2 del PDF se muestra cómo activar modo interactivo y configurar el volumen.
Ejemplo conceptual:
docker run -it -v /ruta/host:/ruta/contenedor mi-imagen
¿Por qué es importante?
Si borras el contenedor, los datos seguirán vivos.
Bienvenido al mundo real.
✅ Checkpoint
Crea un archivo dentro del contenedor y verifica que aparece en el host.
🚀 RETO 3 — Control de versiones
Objetivo
Versionar tu carpeta de trabajo y conectarla a GitHub.
Tal como aparece en la página 3 del PDF:
1️⃣ Inicializa Git
2️⃣ Crea un repositorio en GitHub
3️⃣ Ejecuta:
git add .
git commit -m "Inicio del laboratorio"
git remote add origin <repo>
git push -u origin main
✅ Checkpoint
Tu repositorio debe contener al menos:
- scripts
- documentación
- archivos de configuración
🚀 RETO 4 — MySQL en contenedor
Objetivo
Levantar un contenedor MySQL y crear una base de datos de coches.
Campos:
- id
- marca
- modelo
- color
- km
- precio
Inserta mínimo 10 registros.
📌 La página 4 del PDF muestra la configuración del contenedor.
✅ Checkpoint
Debe funcionar:
SELECT * FROM coches;
🚀 RETO 5 — Python contra la base de datos
Objetivo
Crear un script que lea los coches desde MySQL.
Las páginas 5–7 del PDF enseñan:
- conexión con
mysql.connector - uso de cursor
- fetchall()
Ejemplo conceptual:
cursor.execute("SELECT * FROM coches")
for coche in cursor.fetchall():
print(coche)
⚠️ Problema común
En la página 9 se menciona un conflicto con el conector de MySQL en Ubuntu.
Solución alternativa:
pip install mysql-connector-python --break-system-packages
✅ Checkpoint
El script debe mostrar registros sin errores.
🚀 RETO 6 — Seguridad básica
Objetivo
Separar credenciales en un archivo JSON.
Después:
✔ Leer ese archivo desde Python
✔ Crear .gitignore
✔ Evitar subir credenciales
✅ Checkpoint
Tu repo NO debe contener:
config.json
.env
credenciales
🚀 RETO 7 — Salida profesional
Objetivo
Mostrar los datos en formato tabla.
En la página 10 se recomienda usar:
apt install python3-prettytable
Ejemplo:
from prettytable import PrettyTable
✅ Checkpoint
La salida debe parecer una tabla real, no texto desordenado.
🚀 RETO 8 — MongoDB entra en escena
Ahora pasamos a bases de datos NoSQL.
Según las páginas 12–16:
Debes:
- Crear contenedor Mongo
- Definir usuario y contraseña
- Crear BD
- Insertar coches
- Consultar datos
Acceso desde terminal:
docker exec -it <contenedor> bash
mongosh -u usuario -p password --authenticationDatabase admin
✅ Checkpoint
Debe funcionar:
db.coches.find().pretty()
🚀 RETO 9 — Python + MongoDB
Instala pymongo (pág. 18):
apt install python3-pymongo
Conecta y recorre la colección.
Después muestra los datos en tabla (pág. 20).
✅ Checkpoint
Debes tener:
- script funcional
- salida formateada
- conexión estable
🚀 RETO FINAL — Publica tu imagen
Sube tu imagen de Mongo personalizada a Docker Hub.
Después:
👉 descárgala desde otra máquina (por ejemplo Parrot)
👉 levanta el contenedor
Si funciona…
Acabas de reproducir un flujo profesional real.










![[Reto] - Despliegue de servicios con Docker y Docker Compose b2427176-50e6-4af6-ada1-f4903698014f](https://laaventuradeaprender.com/wp-content/uploads/2026/06/b2427176-50e6-4af6-ada1-f4903698014f-150x150.png)




![[Reto] - Dockerizar app JEE (Tomcat 10 + MySQL) 4b9bc3d2-8253-4715-adf6-d5b1eed959d3](https://laaventuradeaprender.com/wp-content/uploads/2026/02/4b9bc3d2-8253-4715-adf6-d5b1eed959d3-150x150.png)