4.1 Concetti di base della pubblicazione delle porte
Pubblicazione delle porte dei container in Docker permette ai servizi che funzionano all'interno dei container di essere accessibili dalla rete esterna o dall'host. È una parte importante della configurazione delle applicazioni multi-container, poiché permette di interagire con i servizi come web server, database e altre applicazioni di rete. In questa lezione vedremo come pubblicare le porte dei container e configurare l'accesso ai servizi.
Concetti principali della pubblicazione delle porte
- Mapping delle porte: corrispondenza della porta dell'host alla porta del container.
- Parametro
-p/--publish
: usato per specificare il mapping delle porte quando si avvia un container. - Parametro
-P/--publish-all
: assegnazione automatica delle porte dell'host per tutte le porte esportate del container.
Esempio di utilizzo del parametro -p
Quando avvii un container puoi usare l'opzione -p
per mappare la porta dell'host a una porta del container. Formato del comando:
docker run -d -p <host_port>:<container_port> <image>
Esempio 1: Pubblicazione della porta del web server Nginx
Avviamo un container con Nginx e pubblichiamo la porta 80 del container sulla porta 8080 dell'host.
Ora Nginx sarà accessibile all'indirizzo http://localhost:8080.
docker run -d -p 8080:80 --name mynginx nginx
Esempio 2: Pubblicazione di più porte
Puoi pubblicare più porte specificando diverse opzioni -p
.
In questo esempio Nginx sarà accessibile via HTTP sulla porta 8080 e via HTTPS sulla porta 8443.
docker run -d -p 8080:80 -p 8443:443 --name mynginx nginx
Esempio di utilizzo del parametro -P
Il parametro -P
pubblica automaticamente tutte le porte indicate nel Dockerfile o nelle impostazioni del container, su porte casuali dell'host.
Esempio:
docker run -d -P --name mynginx nginx
Per sapere quali porte sono state assegnate, usa il comando docker port
:
docker port mynginx
L'output sarà simile a questo:
80/tcp -> 0.0.0.0:32768
443/tcp -> 0.0.0.0:32769
4.2 Pubblicazione delle porte in Docker Compose
Per assegnare le porte in Docker Compose usa la direttiva ports
nel file docker-compose.yml
.
Esempio di file docker-compose.yml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
- "8443:443"
Esegui Docker Compose:
docker compose up -d
Ora Nginx sarà disponibile agli indirizzi http://localhost:8080 e https://localhost:8443.
4.3 Parametri aggiuntivi per la pubblicazione delle porte
1. Limitazione dell'indirizzo IP
Puoi limitare l'accesso alla porta del container specificando l'indirizzo IP dell'host.
Esempio:
In questo esempio Nginx sarà accessibile solo dall'host locale all'indirizzo http://127.0.0.1:8080.
docker run -d -p 127.0.0.1:8080:80 --name mynginx nginx
2. Uso di un intervallo di porte
Puoi specificare un intervallo di porte da pubblicare.
Esempio:
docker run -d -p 8080-8081:80-81 --name mynginx nginx
Consigli pratici:
- Pubblica solo le porte necessarie: Pubblica solo le porte effettivamente necessarie per accedere ai servizi, in modo da ridurre le potenziali vulnerabilità.
- Uso del firewall: Configura un firewall per limitare l'accesso alle porte pubblicate solo da indirizzi IP di fiducia.
- Monitoraggio e logging: Usa strumenti di monitoraggio e logging per tracciare l'accesso alle porte pubblicate e identificare attività sospette.
GO TO FULL VERSION