Docker: reti e volumi
Bridge, macvlan, DNS tra container, volumi, backup e permessi. Ogni comando è verificato e copiabile; in chat basta descrivere cosa vuoi fare.
13 comandi in questa pagina
- Come vedo le reti Docker e chi ci è collegato?
- Come creo una rete bridge dedicata?
- Come do a un container un IP della LAN (macvlan)?
- Come collego o scollego un container da una rete?
- I container non si risolvono per nome: perché?
- "Port is already allocated": come lo risolvo?
- Come testo la connettività tra due container?
- Come creo e listo i volumi?
- Dove stanno fisicamente i dati di un volume?
- Come faccio il backup di un volume?
- Come ripristino un volume da un backup tar?
- Permission denied su un volume: come sistemo UID e GID?
- Come elimino i volumi orfani?
# Come vedo le reti Docker e chi ci è collegato?
docker network ls
docker network inspect <rete>
inspect elenca i container collegati con i loro IP interni.
Approfondisci: Come funziona l'instradamento del traffico di specifici container Docker attraverso un container VPN dedicato (es. Gluetun)?
# Come creo una rete bridge dedicata?
docker network create mia-rete
Sulle bridge personalizzate i container si risolvono per nome (DNS interno); sulla bridge di default no.
Approfondisci: Come funziona l'instradamento del traffico di specifici container Docker attraverso un container VPN dedicato (es. Gluetun)?
# Come do a un container un IP della LAN (macvlan)?
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 lan
Limite noto: l'host non parla coi container macvlan senza un'interfaccia macvlan dedicata lato host.
Approfondisci: Come funziona l'instradamento del traffico di specifici container Docker attraverso un container VPN dedicato (es. Gluetun)?
# Come collego o scollego un container da una rete?
docker network connect mia-rete <nome>
docker network disconnect mia-rete <nome>
Un container può stare su più reti insieme: utile per esporre un servizio a due stack separati.
Approfondisci: Come funziona l'instradamento del traffico di specifici container Docker attraverso un container VPN dedicato (es. Gluetun)?
# I container non si risolvono per nome: perché?
docker network inspect bridge
Sulla bridge di default il DNS tra container non esiste: crea una bridge custom e collegali lì (Compose lo fa da solo).
Approfondisci: Cos'è Docker Compose?
# "Port is already allocated": come lo risolvo?
ss -tlnp | grep :<porta>
Qualcosa occupa già la porta sull'host (spesso un altro container): cambia il mapping (8081:80) o ferma l'occupante.
Approfondisci: Cos'è Docker Compose?
# Come testo la connettività tra due container?
docker exec <a> ping -c2 <b>
docker exec <a> nc -zv <b> <porta>
Devono stare sulla stessa rete; se il ping va e nc no, il servizio dentro il container non ascolta su 0.0.0.0.
Approfondisci: Come funziona l'instradamento del traffico di specifici container Docker attraverso un container VPN dedicato (es. Gluetun)?
# Come creo e listo i volumi?
docker volume ls
docker volume create dati-app
I volumi anonimi (hash lunghi) nascono dai container senza volume esplicito: nominali sempre.
# Dove stanno fisicamente i dati di un volume?
docker volume inspect --format '{{.Mountpoint}}' dati-app
Di norma /var/lib/docker/volumes/<nome>/_data – ma passa dai comandi docker, non modificarli a mano.
# Come faccio il backup di un volume?
docker run --rm -v dati-app:/data -v $(pwd):/backup alpine tar czf /backup/dati-app.tgz -C /data .
A servizio fermo per i database – o meglio, usa il dump nativo del db.
# Come ripristino un volume da un backup tar?
docker run --rm -v dati-app:/data -v $(pwd):/backup alpine tar xzf /backup/dati-app.tgz -C /data
Il volume deve esistere già (docker volume create); il tar viene estratto sopra il contenuto attuale.
# Permission denied su un volume: come sistemo UID e GID?
docker exec <nome> id
sudo chown -R 1000:1000 <path-del-bind-o-mountpoint>
Il container scrive col SUO uid: allinea il proprietario sul filesystem, o imposta user: nel Compose.
Approfondisci: Qual è la differenza strutturale tra named volumes Docker persistenti e bind mounts per l'accesso ai file residenti sul filesystem host?Container privilegiati o non privilegiati: quale usare?
# Come elimino i volumi orfani?
docker volume prune
Cancella DATI per sempre: prima docker volume ls, e un backup di ciò che non riconosci.
Approfondisci: Qual è la differenza strutturale tra named volumes Docker persistenti e bind mounts per l'accesso ai file residenti sul filesystem host?Storage pieno su Proxmox: come liberare spazio senza disastri