docs: add comprehensive student guide and update README
This commit is contained in:
@@ -0,0 +1,254 @@
|
||||
# Guida per Studenti - Corso Laboratori Cloud
|
||||
|
||||
Benvenuto nel Corso Laboratori Cloud! Questa guida ti spiega come utilizzare al meglio questo corso di simulazione pratica dei servizi cloud usando Docker locale.
|
||||
|
||||
## Cosa è questo corso?
|
||||
|
||||
Questo corso ti insegna i concetti fondamentali del cloud computing (IAM, Networking, Compute, Storage, Database) attraverso laboratori pratici. Invece di usare account cloud costosi, usiamo Docker sul tuo computer per simulare i servizi AWS/Azure/GCP.
|
||||
|
||||
Ogni laboratorio ti guida passo-passo nella creazione di infrastrutture locali che si comportano come i servizi cloud reali.
|
||||
|
||||
## Prerequisiti
|
||||
|
||||
Prima di iniziare, assicurati di avere:
|
||||
|
||||
- **Docker Engine** >= 24.0 installato e funzionante
|
||||
- **Docker Compose V2** (usa `docker compose`, NON `docker-compose` deprecato)
|
||||
- **Strumenti di rete**: netcat, curl, iproute2 (solitamente preinstallati su Linux/macOS)
|
||||
- **Sistema operativo**: Linux, macOS o Windows con Docker Desktop
|
||||
|
||||
### Verifica dell'ambiente
|
||||
|
||||
1. Apri un terminale
|
||||
2. Clona la repository:
|
||||
```bash
|
||||
git clone https://gitea.lab.home.lucasacchi.net/lucasacchi/laboratori-cloud
|
||||
cd laboratori-cloud
|
||||
```
|
||||
3. Verifica che tutto funzioni:
|
||||
```bash
|
||||
./scripts/check-env.sh
|
||||
```
|
||||
|
||||
Se tutti i controlli passano, sei pronto!
|
||||
|
||||
## Come seguire il corso
|
||||
|
||||
### 1. Struttura del corso
|
||||
|
||||
Il corso ha **5 laboratori progressivi**:
|
||||
|
||||
- **Lab 01: IAM & Sicurezza** - Utenti, permessi, sicurezza container
|
||||
- **Lab 02: Network & VPC** - Reti isolate, simulazione VPC/Subnets
|
||||
- **Lab 03: Compute & EC2** - Limiti risorse, healthchecks, simulazione EC2
|
||||
- **Lab 04: Storage & S3** - Volumi, MinIO come S3 locale
|
||||
- **Lab 05: Database & RDS** - Database persistente, simulazione RDS
|
||||
|
||||
### 2. Come fare un laboratorio
|
||||
|
||||
Ogni laboratorio ha la stessa struttura:
|
||||
|
||||
```
|
||||
labs/lab-XX-nome/
|
||||
├── tutorial/ # Guida passo-passo (LEGGI PRIMA QUESTO)
|
||||
├── how-to-guides/ # Procedure specifiche per task particolari
|
||||
├── reference/ # Documentazione tecnica completa
|
||||
├── explanation/ # Spiegazione dei paralleli cloud/locale
|
||||
├── docker-compose.yml # Configurazione infrastruttura
|
||||
└── tests/ # Script di verifica
|
||||
└── 99-final-verification.sh
|
||||
```
|
||||
|
||||
**Ordine consigliato:**
|
||||
1. Leggi il **tutorial** dall'inizio alla fine
|
||||
2. Esegui i comandi nel tuo terminale
|
||||
3. Quando arrivi alla fine, verifica con lo script finale
|
||||
|
||||
### 3. Workflow tipico per un laboratorio
|
||||
|
||||
1. **Vai nella cartella del lab:**
|
||||
```bash
|
||||
cd labs/lab-01-iam
|
||||
```
|
||||
|
||||
2. **Leggi il tutorial** (inizia da `01-*.md`):
|
||||
- Segui ogni passo attentamente
|
||||
- Non saltare sezioni
|
||||
- Pratica ogni comando nel tuo terminale
|
||||
|
||||
3. **Verifica il completamento:**
|
||||
```bash
|
||||
bash tests/99-final-verification.sh
|
||||
```
|
||||
|
||||
4. **Se tutto è OK**, passa al laboratorio successivo
|
||||
|
||||
## Come verificare che stai facendo bene
|
||||
|
||||
### Script di verifica finale
|
||||
|
||||
Ogni laboratorio ha uno script `99-final-verification.sh` che controlla:
|
||||
|
||||
- ✅ Configurazioni corrette
|
||||
- ✅ Sicurezza (no root containers, etc.)
|
||||
- ✅ Funzionalità dei servizi
|
||||
- ✅ Compliance con i requisiti tecnici
|
||||
|
||||
**Esegui sempre questo script alla fine di ogni laboratorio!**
|
||||
|
||||
### Cosa fare se la verifica fallisce
|
||||
|
||||
1. Leggi il messaggio di errore
|
||||
2. Controlla l'output per capire cosa non va
|
||||
3. Riguarda il tutorial per il passo problematico
|
||||
4. Riprova la configurazione
|
||||
5. Se ancora problemi, consulta:
|
||||
- **How-to guides** per procedure specifiche
|
||||
- **Troubleshooting** nel tutorial
|
||||
- **Reference** per sintassi tecnica
|
||||
|
||||
## Sicurezza e best practices
|
||||
|
||||
Questo corso segue principi di sicurezza rigorosi:
|
||||
|
||||
- 🔒 **Container non-root**: Mai eseguire container come root
|
||||
- 🚫 **Isolamento rete**: Reti private non esposte sull'host
|
||||
- 📊 **Limiti risorse**: Ogni container ha limiti CPU/memoria
|
||||
- 💾 **Persistenza**: Dati che sopravvivono ai riavvii
|
||||
|
||||
**Rispetta sempre questi principi nei tuoi progetti reali!**
|
||||
|
||||
## Pulizia tra laboratori
|
||||
|
||||
Per evitare conflitti tra laboratori:
|
||||
|
||||
```bash
|
||||
# Dalla root del progetto
|
||||
./scripts/reset-env.sh
|
||||
```
|
||||
|
||||
Questo comando:
|
||||
- Ferma tutti i container
|
||||
- Rimuove reti e volumi creati
|
||||
- Pulisce l'ambiente per il prossimo lab
|
||||
|
||||
## Strumenti utili
|
||||
|
||||
### Comandi Docker essenziali
|
||||
|
||||
```bash
|
||||
# Lista container attivi
|
||||
docker ps
|
||||
|
||||
# Lista tutti i container (anche fermi)
|
||||
docker ps -a
|
||||
|
||||
# Vedi logs di un container
|
||||
docker logs <nome-container>
|
||||
|
||||
# Entra in un container (debug)
|
||||
docker exec -it <nome-container> sh
|
||||
|
||||
# Lista reti
|
||||
docker network ls
|
||||
|
||||
# Lista volumi
|
||||
docker volume ls
|
||||
|
||||
# Statistiche risorse
|
||||
docker stats
|
||||
```
|
||||
|
||||
### Comandi Docker Compose
|
||||
|
||||
```bash
|
||||
# Avvia tutti i servizi
|
||||
docker compose up -d
|
||||
|
||||
# Ferma tutti i servizi
|
||||
docker compose down
|
||||
|
||||
# Vedi stato servizi
|
||||
docker compose ps
|
||||
|
||||
# Logs di tutti i servizi
|
||||
docker compose logs
|
||||
|
||||
# Ricostruisci e riavvia
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
## Risoluzione problemi comuni
|
||||
|
||||
### "Permission denied" su Docker
|
||||
|
||||
```bash
|
||||
# Aggiungi utente al gruppo docker
|
||||
sudo usermod -aG docker $USER
|
||||
# Fai logout e login, oppure:
|
||||
newgrp docker
|
||||
```
|
||||
|
||||
### "Command not found: docker compose"
|
||||
|
||||
Hai la versione vecchia. Installa Docker Compose V2:
|
||||
- Su Linux: Docker Engine >= 24.0 include Compose V2
|
||||
- Su macOS/Windows: Docker Desktop >= 4.0
|
||||
|
||||
### Container non si avvia
|
||||
|
||||
```bash
|
||||
# Controlla logs
|
||||
docker compose logs
|
||||
|
||||
# Controlla risorse
|
||||
docker stats
|
||||
|
||||
# Verifica porte in uso
|
||||
docker ps
|
||||
```
|
||||
|
||||
### "No space left on device"
|
||||
|
||||
Docker occupa troppo spazio. Pulisci:
|
||||
|
||||
```bash
|
||||
# Rimuovi container fermi
|
||||
docker container prune
|
||||
|
||||
# Rimuovi immagini non usate
|
||||
docker image prune
|
||||
|
||||
# Rimuovi volumi orfani
|
||||
docker volume prune
|
||||
|
||||
# Reset completo ambiente
|
||||
./scripts/reset-env.sh
|
||||
```
|
||||
|
||||
## Come imparare al meglio
|
||||
|
||||
1. **Non copiare-incollare**: Scrivi ogni comando a mano
|
||||
2. **Comprendi prima di eseguire**: Leggi perché fai ogni passo
|
||||
3. **Sperimenta**: Modifica parametri e vedi cosa succede
|
||||
4. **Documenta**: Prendi appunti sui comandi importanti
|
||||
5. **Collega al cloud**: Pensa sempre "questo in AWS sarebbe..."
|
||||
|
||||
## Supporto
|
||||
|
||||
- **Documentazione**: Ogni lab ha guide complete
|
||||
- **Script di verifica**: Ti dicono esattamente cosa è sbagliato
|
||||
- **Troubleshooting**: Sezioni dedicate in ogni tutorial
|
||||
- **Reference**: Sintassi completa e parametri
|
||||
|
||||
## Prossimi passi dopo il corso
|
||||
|
||||
Una volta completati tutti i 5 laboratori:
|
||||
|
||||
- Avrai una comprensione pratica del cloud computing
|
||||
- Saprai configurare infrastrutture sicure e scalabili
|
||||
- Potrai applicare questi concetti nei tuoi progetti reali
|
||||
- Sarai pronto per certificazioni cloud (AWS, Azure, GCP)
|
||||
|
||||
**Buon apprendimento! 🚀**</content>
|
||||
<parameter name="filePath">student-guide.md
|
||||
Reference in New Issue
Block a user