1.1 Il driver di rete Bridge
I driver di rete di Docker permettono ai container di comunicare tra loro e con le reti esterne. Docker fornisce diversi driver di rete, ognuno con caratteristiche proprie e destinato a specifici scenari di utilizzo. In questa lezione esamineremo quattro driver di rete principali: bridge, host, none e overlay.
Il driver di rete bridge è il driver di rete predefinito in Docker. Crea una rete interna privata dove i container possono comunicare tra loro. Questa rete è isolata dalla rete esterna dell'host.
Caratteristiche:
- I container collegati alla rete
bridge
possono comunicare tra loro usando gli indirizzi IP. - Le reti esterne non possono interagire direttamente con i container nella rete
bridge
, a meno che non sia configurato il port forwarding. - Facilità d'uso per scenari di sviluppo e test locali.
Esempio di utilizzo:
Quando si crea un container senza specificare una rete, esso viene automaticamente connesso alla rete bridge
.
docker run -d --name my_container nginx
Per configurare il port forwarding si usa il flag -p
.
docker run -d -p 8080:80 --name my_container nginx
1.2 Driver di rete Host
Il driver di rete host
consente a un container di utilizzare direttamente lo stack di rete della macchina host. Questo significa che il container avrà lo stesso indirizzo IP dell'host e potrà utilizzare tutte le interfacce di rete dell'host.
Caratteristiche:
- I container che utilizzano il driver di rete
host
funzionano più velocemente grazie alla riduzione dei costi aggiuntivi per la virtualizzazione della rete. - I container hanno accesso alle stesse interfacce di rete dell'host, il che potrebbe aumentare il rischio per la sicurezza.
- Applicabile in scenari in cui è necessaria un'elevata prestazione di rete o configurazioni di rete specifiche.
Esempio di utilizzo:
docker run -d --network host --name my_container nginx
1.3 Driver di rete None
Il driver di rete none
disabilita tutte le funzionalità di rete del container. Un container collegato alla rete none non ha un'interfaccia di rete, il che lo isola completamente dagli altri container e reti.
Caratteristiche:
- Isolamento completo del container da tutte le reti.
- Utile per i container che non necessitano della rete, ad esempio per l'esecuzione di task che non dipendono dalla rete.
Esempio di utilizzo:
docker run -d --network none --name my_container busybox
1.4 Driver di rete Overlay
Il driver di rete overlay
viene utilizzato per creare una rete distribuita che copre più host Docker. Questo driver viene spesso utilizzato in Docker Swarm o Kubernetes per consentire l'interazione di rete tra container su host diversi.
Caratteristiche:
- Consente la comunicazione tra container su host diversi.
- Richiede una configurazione cluster attiva, come Docker Swarm.
- Permette di creare reti virtuali sopra reti esistenti, offrendo un alto livello di isolamento e sicurezza.
Esempio di utilizzo:
Per utilizzare il driver overlay
, prima è necessario creare un cluster Docker Swarm.
1. Inizializzazione di Docker Swarm:
docker swarm init
2. Creazione di una rete overlay:
docker network create -d overlay my_overlay_network
3. Lancio dei container con connessione alla rete overlay
:
docker service create --name my_service --network my_overlay_network nginx
1.5 Confronto tra driver di rete
Confronto tra diversi driver di rete
Driver di rete | Isolamento | Prestazioni | Applicabilità | Caratteristiche |
---|---|---|---|---|
bridge | Alta | Moderata | Reti locali | Rete isolata per impostazione predefinita |
host | Bassa | Alta | Prestazioni | Stack di rete condiviso con l'host |
none | Tota | Massima | Isolamento | Tota isolazione dalla rete |
overlay | Alta | Alta | Reti distribuite | Comunicazione tra container su host diversi |
Utilizzo dei driver di rete
-
Bridge
: usalo per applicazioni locali e test, quando i container devono interagire tra loro ma devono essere isolati dalla rete esterna. -
Host
: applicalo per applicazioni che richiedono alte prestazioni di rete o configurazioni di rete speciali, dove l'isolamento della rete non è una priorità. -
None
: usalo per container completamente isolati che non necessitano di interazione di rete. -
Overlay
: usalo per applicazioni distribuite che operano in un cluster, dove è necessario garantire la comunicazione tra container su host diversi.
GO TO FULL VERSION