Sistemas Operativos - Trabajo Práctico 4
Objetivos de aprendizaje
• Entender conceptos clave de Docker
• Leer y aplicar documentación oficial
• Construir y levantar una imagen de Docker con una aplicación
Documentación disponible
Concepto Documentación
Docker y contenerización [Link]
Referencia de Dockerfile [Link]
Creación de imágenes [Link]
Optimización de contenedores [Link]
Administración de volúmenes [Link]
Ejecución de contenedores [Link]
Entregables
• Respuestas a todas las preguntas de la Parte A (con referencias a la documentación).
• Un Dockerfile funcional para la aplicación con us .dockerignore.
• Captura de pantalla que muestra el resultado de una ejecución exitosa de Docker y la
respuesta de la API.
Parte A – Teórico: Preguntas conceptuales
Contesta brevemente con tus propias palabras.
1. Contenedores e Imágenes
a) ¿Qué es un contenedor, y cómo se diferencia de una máquina virtual?
b) ¿Qué es una imagen de Docker, y cómo se relaciona con un contenedor?
2. Construcción Imágenes
a) ¿Qué es un Dockerfile y qué sucede al ejecutar docker build?
b) ¿Por qué los Dockerfiles suelen partir de imágenes base pequeñas como python:3.12-slim?
c) ¿Cuál es la utilidad del archivo .dockerignore?
3. Configuración y ejecución de contenedores
a) ¿Qué hacen las instrucciones WORKDIR y COPY?
b) ¿En qué difieren las instrucciones RUN y CMD?
c) ¿Cómo se pueden ver los contenedores en ejecución y detener uno?
Parte B – Práctico: Levantar una aplicación en Docker
Primer paso: crear los archivos del proyecto
Clonar el repositorio con el comando
git clone '[Link]
Se deberían obtener estos archivos:
app/[Link]:
from fastapi import FastAPI
import os
app = FastAPI()
APP_MESSAGE = [Link]("APP_MESSAGE", "Hello from Dockerized FastAPI!")
DATA_DIR = [Link]("DATA_DIR", "/data")
@[Link]("/")
def root():
return {"message": APP_MESSAGE, "data_dir": DATA_DIR}
[Link]:
fastapi==0.115.*
uvicorn==0.30.*
Segundo paso: escribir el Dockerfile y .dockerignore
La estructura final del proyecto debe ser:
fastapi-docker-activity/
├─ app/
│ └─ [Link]
├─ .dockerignore
├─ Dockerfile
└─ [Link]
El archivo Dockerfile debe incluir en orden lógico las instrucciones:
• FROM
• ENV – define solo las variables especificas de la aplicación
• RUN
• WORKDIR
• COPY
• VOLUME
• EXPOSE
• CMD
El archivo .dockerignore se debe configurar para que en el contenedor no haya ninguna
referencia a repositorios Git.
Para ejecutar aplicaciones en FastAPI se debería utilizar el comando
uvicorn '[Link]:app' --host '[Link]' --port '8080'
Tercer paso: compilar y ejecutar
Para compilar la imagen utiliza el comando
docker build -t demo .
Para ejecutar la imagen utiliza el comando
docker run -p 8000:8000 -e APP_MESSAGE="¡Bienvenido, estudiante de Docker!" demo
Para llamar a la API visita [Link] o corre el comando
curl [Link]