Manual ampliado Docker (Continuación)
14. Balanceo de Carga con Docker (Nginx Load Balancer)
Objetivo
Distribuir tráfico entre múltiples contenedores web para alta disponibilidad.
docker-compose.yml
version: "3.9"
services:
web1:
image: nginx
web2:
image: nginx
lb:
image: nginx
ports:
- "8080:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.confnginx.conf
events {}
http {
upstream backend {
server web1;
server web2;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}Ejecutar:
docker compose up -dVerificar balanceo accediendo repetidamente a: http://localhost:8080
15. Proxy Inverso con Nginx
Función
- Centraliza acceso.
- Oculta servicios internos.
- Permite SSL y balanceo.
Ejemplo:
server {
listen 80;
server_name app.local;
location / {
proxy_pass http://web:80;
}
}16. HTTPS y Certificados con Let's Encrypt
Generación de certificados (Certbot)
docker-compose.yml:
services:
nginx:
image: nginx
ports:
- "80:80"
- "443:443"
certbot:
image: certbot/certbotCertificado:
docker run --rm certbot/certbot certonly --standalone -d midominio.comCertificado autofirmado (laboratorio)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt17. Integración con Java en Docker
Aplicación Java simple
Main.java:
public class Main {
public static void main(String[] args) {
System.out.println("Aplicación Java en Docker");
}
}Dockerfile:
FROM eclipse-temurin:21-jre
WORKDIR /app
COPY Main.class .
CMD ["java","Main"]Construcción:
javac Main.java
docker build -t java-app .
docker run java-appSpring Boot
Dockerfile:
FROM eclipse-temurin:21-jre
WORKDIR /app
COPY target/app.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]18. Linux en Docker (Administración)
Acceso a contenedor Linux
docker run -it ubuntu bashComandos útiles:
apt update
top
df -h
free -m
ip aGestión de usuarios
adduser alumno
su alumno19. Ejercicios Avanzados Resueltos
Ejercicio 1
Crear un balanceador con 3 nodos web.
Solución:
docker compose up -d --scale web=3Ejercicio 2
Configurar HTTPS autofirmado.
Solución:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pemEjercicio 3
Crear imagen Java personalizada.
Solución:
docker build -t java-asir .
docker run java-asirEjercicio 4
Administrar un contenedor Linux.
Solución:
docker exec -it ubuntu bash
useradd admin
passwd adminEjercicio 5
Simular caída de un nodo.
Solución:
docker stop web120. Prácticas Linux Propuestas
- Crear un contenedor Ubuntu y:
- Crear usuarios.
- Instalar Apache.
- Configurar firewall interno.
- Monitorizar consumo de recursos con:
htop
docker stats- Crear backup de un volumen:
docker run --rm -v datos:/data -v $(pwd):/backup ubuntu tar czf /backup/copia.tar.gz /dataRestaurar backup.
Simular ataque de carga con Apache Benchmark.
