Title: Exploración de Docker Hub
Course: 2025 - LISI - Virtualizacion 2-2 > Section: Contenedores y Docker

🧪 Actividad Práctica: Exploración de Docker Hub

🎯 Objetivo

Que el estudiante explore, descargue, ejecute y personalice imágenes desde Docker Hub utilizando Docker y Docker Compose, y que comprenda cómo construir imágenes propias con Dockerfile.

📝 Instrucciones para el estudiante

1. Instalación del entorno

Sistema operativo recomendado: Debian 13

A. Instalar Docker

sudo apt update

sudo apt install -y ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \

  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \

  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \

  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

B. Verificar instalación

docker --version

docker compose version

2. Exploración de Docker Hub

1. Accede a https://hub.docker.com
2. Busca las siguientes imágenes:
  - nginx
  - mysql
  - phpmyadmin/phpmyadmin
3. Lee la documentación de cada una y responde:
  - ¿Qué puertos exponen?
  - ¿Qué variables de entorno utilizan?
  - ¿Qué comandos se usan para ejecutarlas?

3. Ejecución de contenedores con Docker Compose

A. Estructura del proyecto

exploracion-docker-hub/
├── docker-compose.yml
├── mysql/
│   └── init.sql
└── nginx/
    └── index.html


B. Archivos necesarios

docker-compose.yml

version: '3.8'

services:

  mysql:

    image: mysql:8.0

    container_name: mysql_db

    restart: always

    environment:

      MYSQL_ROOT_PASSWORD: rootpass

      MYSQL_DATABASE: testdb

      MYSQL_USER: user

      MYSQL_PASSWORD: userpass

    volumes:

      - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql

    ports:

      - "3306:3306"

  phpmyadmin:

    image: phpmyadmin/phpmyadmin

    container_name: phpmyadmin

    restart: always

    environment:

      PMA_HOST: mysql

    ports:

      - "8080:80"

    depends_on:

      - mysql

  nginx:

    image: nginx:latest

    container_name: nginx_web

    volumes:

      - ./nginx/index.html:/usr/share/nginx/html/index.html

    ports:

      - "8081:80"

mysql/init.sql

CREATE TABLE ejemplo (

  id INT AUTO_INCREMENT PRIMARY KEY,

  nombre VARCHAR(50)

);

INSERT INTO ejemplo (nombre) VALUES ('Docker'), ('Compose'), ('Hub');

nginx/index.html

4. Construcción de una imagen personalizada

A. Crear un Dockerfile

# Dockerfile para una app simple en Python

FROM python:3.11-slim

WORKDIR /app

COPY app.py .

CMD ["python", "app.py"]

B. Crear app.py

print("¡Hola desde una imagen personalizada de Docker!")

C. Construir y ejecutar

docker build -t mi-python-app .

docker run --rm mi-python-app

5. Entrega de la actividad

🎥 Entrega en formato de video

1. Graba un video (máximo 10 minutos) donde muestres:
  - Instalación de Docker
  - Exploración en Docker Hub
  - Ejecución de los contenedores con docker-compose
  - Acceso a phpMyAdmin y NGINX desde el navegador
  - Construcción y ejecución de tu imagen personalizada
2. Sube el video a tu canal de YouTube (puede ser no listado).
3. Entrega el enlace en esta actividad de Moodle.

✅ Criterios de evaluación

Criterio | Puntos
Instalación correcta de Docker | 10
Exploración y análisis de imágenes en Docker Hub | 10
Ejecución funcional de docker-compose | 20
Personalización de archivos y estructura | 20
Construcción y ejecución de imagen personalizada | 20
Claridad y calidad del video | 20
Total | 100