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>
232 lines
4.3 KiB
Markdown
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.
|