UD00 — Ejercicios¶
Cómo se trabajan
Resuélvelos en tu cuaderno o en un documento Markdown, a tu ritmo. Si te atascas en alguno, pregunta en clase o por Moodle: el profesor te da la solución. (El notebook de la unidad es un entregable aparte, con su propia entrega — ver Recursos.)
A. Sobre el módulo y la evaluación¶
- Cita los 7 RA del módulo y asocia cada uno con su número.
- ¿Cuántas horas tiene el módulo? ¿Cuántas semanas y a qué ritmo semanal?
- Explica cómo se calcula la nota final del módulo (pesos de RA1-RA6 y RA7).
- ¿Es el RA7 un caso especial a la hora de superar el módulo? Razona tu respuesta.
- ¿Por qué el contenido del módulo debe finalizar a finales de abril?
- Indica cuándo se hacen las evaluaciones parciales y qué RAs cubren cada una.
- ¿Qué herramientas usaremos como entorno de trabajo durante el curso? Describe brevemente cada una.
B. Conceptos de Docker¶
- Diferencia imagen y contenedor con un ejemplo.
- Explica el papel del daemon, del cliente y de los registros en la arquitectura de Docker.
- Enumera dos ventajas de los contenedores frente a las máquinas virtuales y una situación en la que convenga usar ambas.
- ¿Qué hace exactamente
docker runcuando la imagen aún no está descargada? Describe los pasos. - ¿Qué ocurre con los datos de un contenedor cuando lo eliminas? ¿Cómo los conservas?
- ¿Cuál es la diferencia entre
docker stop,docker rmydocker rmi? - Explica con tus palabras qué ocurre al ejecutar
docker run hello-worldla primera vez.
C. Dockerfile¶
- ¿Por qué un Dockerfile debe empezar por
FROM? - Diferencia
RUN,CMDyENTRYPOINT. - Escribe un
Dockerfileque parta depython:3.12-slim, copierequirements.txtyapp.py, instale las dependencias y ejecute la app. - ¿Por qué se recomienda copiar
requirements.txtantes que el resto del código? ¿Qué relación tiene con las capas? - ¿Qué es un
.dockerignorey para qué sirve? - Dado el
Dockerfileanterior, escribe los comandos para construir la imagen y para ejecutarla publicando el puerto 8000.
D. Docker Compose¶
- ¿Qué ventaja aporta
docker-compose.ymlfrente a variosdocker run? - Escribe un
compose.yamlcon un serviciojupyterque publique el puerto8888, monte la carpeta./practicasy use el tokencursoia. - Explica la diferencia entre
docker compose up -d,docker compose downydocker compose down -v. - ¿Para qué sirven los comandos
docker compose config,docker compose logs -fydocker compose exec? - ¿Cómo se ordena el arranque de servicios en Compose? ¿Qué papel juegan los healthchecks?
- ¿Cómo se conservan los datos con Compose? ¿Qué hace la clave
volumesde nivel superior?
E. Prácticos¶
- Levanta un contenedor
python:3.12interactivo y escribe un programa que imprimaHola desde Docker. ¿Qué comando usas para entrar y para salir? - Levanta
nginxen segundo plano en el puerto8080y comprueba en tu navegador que responde. ¿Cómo lo detienes y lo eliminas? - Crea una carpeta
practicas, monta esa carpeta en un contenedorpython:3.12y ejecuta desde dentro un archivoapp.pyque hayas escrito en el host. - Escribe el
docker-compose.ymldel taller 2, levanta Jupyter y abre la URL en el navegador.
F. Instalación, versiones y mantenimiento¶
- Tras ejecutar
sudo usermod -aG docker $USER, ¿por qué hay que cerrar y volver a abrir la sesión? ¿Qué mensaje de error aparece si no lo haces? - El mismo
pip install expertafunciona enpython:3.9-slimy falla al importar enpython:3.12-slim. Explica la causa, qué hace el parche de tres líneas y por qué el problema no aparece al instalar sino al importar. - Diferencia
docker save/docker loaddedocker export/docker import. ¿Cuál conserva el historial de capas de la imagen y por qué importa? - Tienes 12 GB ocupados en imágenes. Explica qué hace
docker image prune -a, en qué se diferencia de borrar por identificador y qué riesgo tiene ejecutarlo sin mirar.
Soluciones¶
Soluciones
Las soluciones no se publican: se corrigen y comentan en clase.