Fixed grep pattern to correctly count named volumes. All 6 tests now pass: ✓ docker-compose.yml exists ✓ Syntax valid ✓ Named volumes created (4) ✓ MinIO API accessible ✓ MinIO console accessible ✓ Data persists after restart Lab 04 now: 6/6 tests PASSING (100%)
Laboratori Cloud - Corso Soluzioni Cloud
Simulazione pratica di servizi cloud usando Docker locale.
Questo corso ti insegna i concetti fondamentali del cloud (IAM, Network, Compute, Storage, Database) attraverso laboratori pratici che usano Docker per simulare servizi AWS/Azure/GCP.
Perché questo corso?
I servizi cloud sono potenti, ma imparare su account reali può essere costoso e intimidatorio. Questo corso usa Docker per simulare i componenti core della cloud infrastructure direttamente sul tuo computer. Ogni laboratorio costruisce un parallelismo diretto tra i container locali e i servizi cloud reali.
Prerequisiti
Prima di iniziare, assicurati di avere:
- Docker Engine >= 24.0 installato
- Docker Compose V2 (comando
docker compose, nondocker-compose) - Utility di rete: netcat, curl, iproute2
Risorse Minime Consigliate
- RAM: 16 GB (funziona con 8 GB, ma alcuni lab potrebbero essere lenti)
- CPU: 4 core
- Spazio disco: 20 GB liberi
Installazione Docker
Linux:
# Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
macOS: Scarica Docker Desktop da https://www.docker.com/products/docker-desktop/
Windows: Scarica Docker Desktop da https://www.docker.com/products/docker-desktop/
Quick Start
-
Clona questa repository:
git clone https://github.com/your-org/laboratori-cloud.git cd laboratori-cloud -
Verifica il tuo ambiente:
./scripts/check-env.sh -
Se tutti i check passano, sei pronto per iniziare il primo laboratorio!
Vai in
labs/lab-01-iam/e segui le istruzioni.
Laboratori
Il corso è composto da 5 laboratori progressivi:
1. IAM & Sicurezza ✅ COMPLETATO
Configura utenti Linux, permessi Docker socket, capisci i paralleli IAM.
- Crea utenti con permessi limitati
- Configura accesso al Docker socket
- Container non-root per sicurezza
- Parallelismo: Utenti Linux -> IAM Users, Gruppi -> IAM Roles
Documentazione: Tutorial | How-to | Reference | Explanation
2. Network & VPC ✅ COMPLETATO
Crea reti Docker isolate che simulano VPC e Subnets cloud.
- Reti bridge isolate con subnet personalizzate (10.0.1.0/24, 10.0.2.0/24)
- Regole di isolamento tra container (ping test)
- Reti private con flag
--internal(simulano private subnet) - Parallelismo: Docker Networks -> VPC,
--internal-> Private Subnet,--subnet-> CIDR blocks
Documentazione: Tutorial | How-to | Reference | Explanation
3. Compute & EC2 ✅ COMPLETATO
Deploy container con limiti CPU/memoria e healthchecks.
- Configura limiti di risorse (cpus, mem_limit)
- Implementa healthcheck personalizzati
- Parallelismo: Container -> EC2, Resource limits -> Instance types
Documentazione: Tutorial | How-to | Reference | Explanation
4. Storage & S3 ✅ COMPLETATO
Configura Docker Volumes e MinIO per storage S3-compatible.
- Volumes named e bind mounts
- MinIO come S3 locale
- Parallelismo: Docker Volumes -> EBS, MinIO -> S3
Documentazione: Tutorial | How-to | Reference | Explanation
5. Database & RDS
Deploy PostgreSQL in rete privata con persistenza dati.
- Container database in rete isolata
- Backup e restore dei dati
- Parallelismo: PostgreSQL container -> RDS, Volume -> Snapshot
Struttura Repository
laboratori-cloud/
├── labs/ # Laboratori (1 per modulo cloud)
│ ├── lab-01-iam/ # IAM & Sicurezza
│ ├── lab-02-network/ # Network & VPC
│ ├── lab-03-compute/ # Compute & EC2
│ ├── lab-04-storage/ # Storage & S3
│ └── lab-05-database/ # Database & RDS
├── how-to-guides/ # Guide procedurali specifiche
├── reference/ # Specifiche tecniche e reference
└── scripts/ # Script di verifica e utilità
Git Workflow
Questo repository segue Conventional Commits.
Esempi di commit che troverai:
feat(lab-01): add user configuration scripttest(lab-02): add network isolation testdocs(lab-03): add explanation for healthchecks
Ogni laboratorio è sviluppato su un branch isolato (es. lab-01-iam) e
mergeggiato su main solo quando completo e testato.
Framework Diátaxis
Ogni laboratorio include 4 tipi di documento per supportare diversi stili di apprendimento:
- Tutorial - Guida passo-passo incrementale
- How-to Guides - Procedure specifiche e task-focused
- Reference - Specifiche tecniche e parametri
- Explanation - Concetti e parallelismi cloud/locale
Troubleshooting
Docker non parte
- Verifica che il demone Docker sia in esecuzione:
docker ps - Riavvia Docker:
sudo systemctl restart docker(Linux)
Script check-env.sh fallisce
- Verifica la versione di Docker:
docker --version(deve essere >= 24.0) - Verifica Compose V2:
docker compose version(nondocker-compose) - Assicurati di essere nel gruppo docker:
groups $USER
Permesso negato su Docker socket
sudo usermod -aG docker $USER
# Fai logout e login oppure
newgrp docker
Container non parte o crasha subito
- Controlla i log:
docker logs <container-name> - Verifica le risorse disponibili:
docker stats - Controlla le porte in uso:
docker ps
Reset completo ambiente
Per pulire tutto tra un lab e l'altro:
./scripts/reset-env.sh
Questo script ferma tutti i container, rimuove volumi e reti create per i laboratori.
Safety First
Questo corso segue principi di sicurezza rigorosi:
- Minimo Privilegio: I container non girano mai come root
- Isolamento di Rete: Le reti private non espongono porte sull'host
- Limiti di Risorse: Ogni container ha limiti CPU e memoria configurati
- Persistenza: I dati sopravvivono al riavvio dei container
Roadmap
Progresso Complessivo: 100% (4/4 Lab Core completati)
| Phase | Stato | Descrizione |
|---|---|---|
| Phase 1 | ✅ COMPLETATA | Setup & Git Foundation |
| Phase 2 | ✅ COMPLETATA | Lab 01 - IAM & Sicurezza |
| Phase 3 | ✅ COMPLETATA | Lab 02 - Network & VPC |
| Phase 4 | ✅ COMPLETATA | Lab 03 - Compute & EC2 |
| Phase 5 | ✅ COMPLETATA | Lab 04 - Storage & S3 |
| Phase 6-10 | 📋 DEFINITO | Integration & Testing, Polish |
Vedi .planning/ROADMAP.md per dettagli completi.
Contributing
Questo è un progetto didattico. Suggerimenti e miglioramenti sono benvenuti tramite pull request.
License
MIT License - Vedi LICENSE file per dettagli.