📚 Wiki🖥️ Self-Hosting › Docker: guida completa per chi inizia il self-hosting

Docker: guida completa per chi inizia il self-hosting

👤 di @Sara_SelfHost 📅 28/04/2026 👁️ 184 visite
docker container self-hosting docker-compose
📄 Contenuto 🕐 Cronologia (0)
<h2>Cos\'è Docker e perché usarlo</h2>
<p>Docker è una piattaforma di containerizzazione che permette di eseguire applicazioni in ambienti isolati e riproducibili. Per il self-hosting è rivoluzionario: invece di installare dipendenze sul sistema host, ogni applicazione gira nel suo container con tutto il necessario incluso.</p>
<p><strong>Vantaggi per il self-hosting</strong>:</p>
<ul>
<li>Installazione di qualsiasi app in 2 comandi</li>
<li>Aggiornamenti senza rompere il sistema</li>
<li>Isolamento: un container crashato non influenza gli altri</li>
<li>Portabilità: stesso docker-compose funziona su qualsiasi macchina</li>
<li>Rollback facile: torna alla versione precedente in un attimo</li>
</ul>

<h2>Installazione Docker</h2>
<pre><code># Ubuntu/Debian
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker

Esci e rientra per applicare il gruppo



Verifica


docker --version
docker run hello-world</code></pre>

<h2>Concetti fondamentali</h2>
<h3>Image vs Container</h3>
<ul>
<li><strong>Image</strong>: il "template" immutabile. Es: <code>nginx:latest</code>, <code>postgres:16</code></li>
<li><strong>Container</strong>: un'istanza in esecuzione di un'image. Puoi avere più container dalla stessa image</li>
</ul>
<h3>Volume</h3>
<p>I dati nei container sono volatili — se rimuovi il container, i dati scompaiono. I <strong>volume</strong> persistono i dati sul disco host.</p>
<h3>Network</h3>
<p>I container comunicano tramite reti Docker. La rete <code>bridge</code> è il default. Crea reti custom per isolare gruppi di container.</p>
<h3>Port Mapping</h3>
<p><code>-p 8080:80</code> — porta 8080 dell'host mappa alla porta 80 del container.</p>

<h2>Docker Compose: gestire più container</h2>
<p>Docker Compose permette di definire e avviare più container con un singolo file YAML.</p>
<pre><code># Struttura base docker-compose.yml
version: '3.8'
services:
app:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped

db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
POSTGRES_DB: myapp
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped

volumes:
postgres_data:</code></pre>
<pre><code># Comandi essenziali
docker compose up -d # avvia in background
docker compose down # ferma e rimuovi container
docker compose logs -f # segui i log
docker compose pull # aggiorna le image
docker compose restart app # riavvia solo il servizio 'app'</code></pre>

<h2>Gestione container</h2>
<pre><code># Lista container attivi
docker ps

Lista tutti (anche fermati)


docker ps -a

Accedi al terminale di un container


docker exec -it nome_container bash

Visualizza log


docker logs -f nome_container

Rimuovi container fermati e image inutilizzate


docker system prune -a</code></pre>

<h2>Best practices</h2>
<ul>
<li>Usa sempre tag specifici (<code>postgres:16.2</code>), non <code>latest</code> in produzione</li>
<li>Non esporre mai porte direttamente su Internet senza reverse proxy</li>
<li>Usa variabili d\'ambiente (file <code>.env</code>) per le credenziali — mai hard-coded nel compose</li>
<li>Backup regolari dei volume prima di aggiornare</li>
<li>Usa <strong>Watchtower</strong> per aggiornamenti automatici controllati</li>
</ul>

<h2>Prossimi passi</h2>
<p>Una volta capito Docker, esplora:</p>
<ul>
<li><strong>Traefik o Nginx Proxy Manager</strong>: reverse proxy con HTTPS automatico</li>
<li><strong>Portainer</strong>: GUI web per gestire Docker</li>
<li><strong>Uptime Kuma</strong>: monitoring dei tuoi servizi</li>
</ul>

📄 Info pagina

📂 🖥️ Self-Hosting
👤 Autore: @Sara_SelfHost
📅 Creata: 20/04/2026
📅 Aggiornata: 28/04/2026
👁️ Visualizzazioni: 184
🔄 Revisioni: 1
← Torna alla Wiki