Come reindirizzare il traffico dalla macchina host ai container Docker senza usare un tool di orchestrazione ?
- Klevis Cipi
- 2 ago 2024
- Tempo di lettura: 2 min

Docker, per impostazione predefinita, isola i container dall'host e dagli altri container. Tuttavia, offre diversi meccanismi per stabilire la comunicazione, di cui vorrei menzionarne due:
Bridge network: Ogni container ottiene un indirizzo IP privato su una rete bridge di Docker, dove l'host funge da tramite, permettendo ai container di comunicare tra loro.
Port mapping (mappatura delle porte): Viene esposta una porta del container su una porta dell'host, consentendo l'accesso ai servizi del container dall'esterno.
Tuttavia, la bridge network è una rete privata e gli IP con range 172.17.x.x non sono accessibili al di fuori dell'host.
Nei progetti contenerizati con Docker in produzione, come buona pratica, i servizi vengono esposti all'host e al mondo esterno tramite una porta specifica, ad esempio 7005.
Ecco un esempio di comando:
docker run -d -p 7005:80 --name webserver nginx
7005: porta esposta sull'host
80: porta del servizio all'interno del container
In questo caso, basta inserire nel browser l'indirizzo IP dell'host con la sua porta:
http://<indirizzo_ip_host>:7005
Tuttavia, non è una buona pratica esporre direttamente al mondo la porta dedicata.
È meglio utilizzare un reverse proxycome Nginx o un altro web server e bloccare la porta all'esterno utilizzando un firewall.
Il reverse proxy viene utilizzato per inoltrare il traffico dall'origine al servizio dedicato.
Il servizio dedicato verrà configurato nel file di configurazione di Nginx:
server {
listen 80;
server_name tuodominio.com;
location / {
# container Docker
proxy_pass http://localhost:7005;
}
location /blog/ {
# container Docker
proxy_pass http://localhost:7006;
}
}
Ecco i passaggi del flusso di traffico sulla rete:
L'utente digita https://tuodominio.com nel browser.
Il DNS risolve tuodominio.com nell'indirizzo IP dell'host.
Il browser invia una richiesta HTTP all'indirizzo IP dell'host sulla porta 80.
Il firewall dell'host o il meccanismo di routing inoltra la richiesta alla porta 80 del web server Nginx dell'host stesso.
Nginx, tramite reverse proxy, reindirizza il traffico nel container dedicato.
Conclusione:
Utilizzare docker in produzione senza un orchestrazione richiede un lavoro manuale.
Comunque con la conoscenza giusta usando il lavoro manuale ti permette di configurarlo nel modo migliore senza aggiungere ancora complessità all'architettura usando un tool di orchestrazione.
Il tool di orchestrazione sarebbe necessario se i container da mantenere in modo manuale diventato troppi.
l would be necessary if the containers, to be maintained manually, become too many.