7.1 Basi del reindirizzamento delle porte (Port forwarding)
Il reindirizzamento delle porte è una funzione importante di Docker che permette alle applicazioni all'interno dei container di essere accessibili dall'esterno. Questa funzione è necessaria per connettersi a web server, database o altri servizi eseguiti nei container, dalla macchina host o anche da altre reti.
Di default i container operano in una rete isolata. Per rendere un servizio all'interno del container accessibile, Docker reindirizza le porte del container alle porte della macchina host.
Per il reindirizzamento delle porte si utilizza il parametro -p
o --publish
del comando docker run
.
Sintassi
docker run -p [HOST_PORT]:[CONTAINER_PORT] [OPTIONS] IMAGE [COMMAND] [ARG...]
dove:
- HOST_PORT: porta sulla macchina host attraverso cui passerà il traffico.
- CONTAINER_PORT: porta interna al container dove verrà reindirizzato il traffico.
- OPTIONS: parametri aggiuntivi per configurare il container.
- IMAGE: immagine da cui viene creato il container.
- COMMAND: comando eseguito all'interno del container.
- ARG...: argomenti per il comando.
Esempio di utilizzo base
In questo esempio la porta 80 del container, dove è attivo un web server Nginx, viene reindirizzata alla porta 8080 della macchina host. Dopo ciò, potrai aprire il web server nel browser all'indirizzo http://localhost:8080.
docker run -d -p 8080:80 nginx
7.2 Altre opzioni di reindirizzamento delle porte
1. Reindirizzamento multiplo delle porte
Docker ti consente di reindirizzare più porte contemporaneamente. Per fare ciò, si utilizzano diverse opzioni -p
.
Esempio
In questo esempio, la porta 80 del container viene reindirizzata alla porta 8080 dell'host, e la porta 443 del container — alla porta 8443 dell'host.
docker run -d -p 8080:80 -p 8443:443 nginx
2. Reindirizzamento delle porte specificando l'indirizzo IP
Puoi specificare un indirizzo IP specifico a cui sarà legata la porta reindirizzata. Questo è particolarmente utile se la macchina host ha più interfacce di rete e vuoi limitare l'accesso al container.
Esempio:
In questo esempio, la porta 80 del container viene reindirizzata alla porta 8080 solo sull'interfaccia 127.0.0.1
della macchina host. Questo significa che l'accesso al servizio sarà possibile solo dalla macchina host stessa.
docker run -d -p 127.0.0.1:8080:80 nginx
3. Reindirizzamento di un range di porte
Se hai bisogno di reindirizzare più porte contemporaneamente, Docker supporta il lavoro con i range.
Esempio:
In questo esempio, le porte dal 7000
al 8000
del container vengono reindirizzate alle porte dal 7000
al 8000
della macchina host.
docker run -d -p 7000-8000:7000-8000 someimage
7.3 Scenari pratici di utilizzo
1. Accesso al web server
Il reindirizzamento delle porte viene utilizzato più spesso per fornire accesso ai web server avviati all'interno dei container.
docker run -d -p 8080:80 nginx
Dopo aver eseguito questo comando, il web server Nginx, che opera sulla porta 80 del container, sarà disponibile sulla porta 8080 della macchina host.
2. Accesso al database
Il reindirizzamento delle porte è anche comodo per accedere ai database avviati nei container.
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=mysecretpassword postgres
In questo esempio, PostgreSQL, che opera sulla porta 5432 del container, sarà disponibile sulla porta 5432 della macchina host.
3. Test e sviluppo
I container Docker sono spesso utilizzati per creare ambienti di test isolati. Il reindirizzamento delle porte permette agli sviluppatori di avviare e testare le applicazioni come se funzionassero in un ambiente reale.
docker run -d -p 8080:80 -p 8443:443 myapp
In questo esempio, l'applicazione viene testata sulle porte 8080 e 8443, che corrispondono alle porte standard utilizzate in ambiente di produzione.
7.4 Raccomandazioni aggiuntive
1. Protezione delle porte
Quando reindirizzi le porte, non dimenticare la sicurezza. Le porte aperte possono diventare un bersaglio per gli attacchi. Reindirizza solo le porte realmente necessarie e usa un firewall per limitare l'accesso.
2. Firewall e NAT
Per rafforzare la protezione e gestire il traffico, utilizza i firewall e il Network Address Translation (NAT). Questo ti permetterà di limitare l'accesso ai tuoi servizi e controllare le connessioni di rete.
3. Monitoraggio e log
Configura il monitoraggio e la raccolta dei log per seguire il traffico sulle porte reindirizzate. Questo ti aiuterà a notare e reagire più rapidamente a attività sospette.
GO TO FULL VERSION