Files
laboratori-cloud/TROUBLESHOOTING.md
Luca Sacchi Ricciardi e5f1f37ed6 docs(09-10): complete Phase 9-10 Troubleshooting and Final Validation
Phase 9 - Troubleshooting Docs:
- TROUBLESHOOTING.md: Comprehensive guide for common issues
- Covers all 5 labs with specific solutions
- General Docker problems and diagnostics

Phase 10 - Final Validation:
- FINAL_VALIDATION.md: Complete project validation report
- All 5 labs verified: 100% PASS rate
- All INF requirements (01-04) compliant
- 44 documentation files, 35+ test scripts
- 15,000+ lines of code

PROJECT STATUS:  COMPLETATO (100% - 10/10 Phase)

All deliverables:
✓ 5 complete labs with infrastructure
✓ TDD test coverage for all labs
✓ Diátaxis documentation (44 files)
✓ Integration tests cross-lab
✓ Repository structure
✓ Troubleshooting guide
✓ Final validation report

Parallelismi cloud completi:
- Lab 01 → AWS IAM
- Lab 02 → VPC/Subnets
- Lab 03 → EC2
- Lab 04 → S3/EBS
- Lab 05 → RDS

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 17:49:09 +02:00

232 lines
4.3 KiB
Markdown

# Troubleshooting - Guida Risoluzione Problemi
Questo documento copre i problemi più comuni che possono verificarsi durante i laboratori.
## Problemi Generali Docker
### Container non parte
**Sintomo:** `docker compose up` fallisce con errori
**Soluzioni:**
```bash
# Verifica Docker sia in esecuzione
docker ps
# Verifica logs del container
docker logs <container-name>
# Verifica non ci siano conflitti di porte
docker ps
netstat -tuln | grep <porta>
```
### Permesso negato
**Sintomo:** `permission denied` o `Got permission denied`
**Soluzioni:**
```bash
# Aggiungi utente al gruppo docker
sudo usermod -aG docker $USER
# Logout e login, oppure:
newgrp docker
# Verifica appartenenza al gruppo
groups $USER
```
### Porta già in uso
**Sintomo:** `port is already allocated`
**Soluzioni:**
```bash
# Trova processo usando la porta
sudo lsof -i :<porta>
sudo netstat -tulpn | grep <porta>
# Ferma il servizio che usa la porta
sudo systemctl stop <servizio>
# Oppure cambia porta nel docker-compose.yml
ports:
- "127.0.0.1:8081:80" # Usa porta diversa
```
## Lab-Specifici
### Lab 01 - IAM & Sicurezza
#### Container gira come root
**Verifica:**
```bash
docker exec lab01-<container> whoami
```
**Soluzione:** Il Dockerfile deve creare un utente non-root.
#### Utente non può accedere a Docker
**Sintomo:** `permission denied while trying to connect`
**Verifica:**
```bash
groups <utente>
```
**Soluzione:**
```bash
sudo usermod -aG docker <utente>
newgrp docker
```
### Lab 02 - Network & VPC
#### Container non possono comunicare
**Verifica:**
```bash
docker network inspect lab02-vpc-private
docker network inspect lab02-vpc-public
```
**Soluzione:** Assicurati che i container siano nella stessa rete.
#### Ping fallisce tra reti
**Sintomo:** `ping: bad address` o `Network is unreachable`
**Verifica:**
```bash
# Verifica IP assegnati
docker inspect <container> | grep IPAddress
```
**Soluzione:** Le reti sono isolate per design. Usa container multi-homed per testare.
### Lab 03 - Compute & EC2
#### Healthcheck sempre unhealthy
**Verifica:**
```bash
docker inspect <container> --format '{{.State.Health}}'
```
**Soluzione:** Verifica il comando healthcheck e la configurazione del servizio.
#### Resource limits non applicati
**Verifica:**
```bash
docker stats
docker inspect <container> --format '{{.HostConfig.Memory}}'
```
**Soluzione:** Assicurati che `deploy.resources` sia configurato in docker-compose.yml.
### Lab 04 - Storage & S3
#### Dati persi dopo riavvio
**Verifica:**
```bash
docker volume ls
docker volume inspect <volume>
```
**Soluzione:** Assicurati di usare volumi nominativi, non bind mount anonimi.
#### MinIO non accessibile
**Verifica:**
```bash
curl http://localhost:9000/minio/health/live
```
**Soluzione:** Verifica che MinIO sia in esecuzione e che le porte siano corrette.
### Lab 05 - Database & RDS
#### Database non accessibile
**Verifica:**
```bash
docker exec lab05-db pg_isready -U lab05_user
```
**Soluzione:** Il database è in rete privata. Usa container app per connetterti:
```bash
docker exec lab05-app psql -h db -U lab05_user -d lab05_db
```
#### Connessione dal host fallisce
**Sintomo:** `connection refused`
**Soluzione:** CORRETTO! Il database non deve essere accessibile dall'host (INF-02).
## Comandi Utili
### Pulizia completa
```bash
# Ferma tutti i container
docker compose down
# Rimuovi volumi (ATTENZIONE: perdita dati!)
docker compose down -v
# Rimuovi reti non usate
docker network prune
# Rimuovi container stopped
docker container prune
# Reset completo
./scripts/reset-env.sh
```
### Diagnostica
```bash
# Verifica risorse
docker stats
# Verifica eventi
docker events
# Ispeziona container
docker inspect <container>
# Verifica reti
docker network ls
docker network inspect <network>
# Verifica volumi
docker volume ls
docker volume inspect <volume>
```
## Quando Chiedere Aiuto
Prima di chiedere:
1. ✅ Cerca nei tutorial del lab
2. ✅ Controlla troubleshooting del lab specifico
3. ✅ Esegui i test per identificare il problema
4. ✅ Verifica i log dei container
Se il problema persiste:
- Apri una issue su GitHub
- Includi: errore completo, passi per riprodurre, ambiente
- Specifica: OS, Docker version, lab specifico
---
**Nota:** La maggior parte dei problemi sono risolvibili verificando i log e assicurandosi che i prerequisiti siano soddisfatti.