🏛️ Da VM a Container — Docker & CI/CD per l'Ente

Setup dell'ambiente di laboratorio

Questa guida viene svolta insieme nel Modulo 1 ed è il riferimento per riallineare

qualunque postazione durante tutto il corso.

Requisiti hardware minimi

1. Installare Docker

Linux (consigliato per le postazioni di laboratorio)

# Debian/Ubuntu — repository ufficiale Docker
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# usare docker senza sudo (richiede nuovo login)
sudo usermod -aG docker $USER

Windows / macOS

Installare Docker Desktop da https://www.docker.com/products/docker-desktop/

(su Windows richiede WSL2: wsl --install da PowerShell come amministratore, poi riavvio).

2. Verificare l'installazione

docker --version          # Docker Engine 24+ 
docker compose version    # Docker Compose v2 (plugin, senza trattino)
docker run --rm hello-world

Se hello-world stampa "Hello from Docker!", l'ambiente è pronto.

3. Strumenti di contorno

git --version            # Git 2.30+
code --version           # VS Code (consigliato) + estensione "Docker"

Editor consigliato: VS Code con le estensioni Docker e YAML.

4. Ambiente CI/CD (dal Modulo 8)

I laboratori CI/CD usano GitLab (i concetti si trasferiscono 1:1 a GitHub Actions

e Azure DevOps — la mappa delle equivalenze è nel Modulo 8).

Opzioni, in ordine di preferenza:

  1. GitLab dell'Ente (se disponibile): il trainer crea un gruppo corso-docker con un progetto per partecipante.
  2. gitlab.com (piano free): ogni partecipante crea un account; 400 minuti/mese di runner condivisi bastano per il corso.
  3. GitLab locale via container (fallback aula chiusa): il trainer avvia gitlab/gitlab-ce + un runner sul server d'aula (istruzioni nel pacchetto del Modulo 8).

5. Registry (dal Modulo 7)

Nei laboratori si usa il Container Registry integrato in GitLab. In alternativa il

Modulo 7 mostra come avviare un registry locale (registry:2) per l'aula.

6. Proxy aziendale (se presente)

# /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.ente.it:8080"
Environment="HTTPS_PROXY=http://proxy.ente.it:8080"
Environment="NO_PROXY=localhost,127.0.0.1,registry.ente.it"
sudo systemctl daemon-reload && sudo systemctl restart docker

Problemi frequenti

SintomoCausaRimedio
permission denied ... docker.sockutente non nel gruppo dockersudo usermod -aG docker $USER + nuovo login
Cannot connect to the Docker daemondaemon fermosudo systemctl start docker (Linux) / avviare Docker Desktop
Pull lentissimi o TLS timeoutproxy aziendaleconfigurare il proxy come sopra
Porta già occupata (address already in use)altro processo sulla portacambiare mappatura, es. -p 8081:80