CodeGym /Corsi /Docker SELF /Pubblicazione delle porte dei container

Pubblicazione delle porte dei container

Docker SELF
Livello 17 , Lezione 3
Disponibile

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:

Terminale

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.

Terminale

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.

Terminale

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:

Terminale

docker run -d -P --name mynginx nginx 

Per sapere quali porte sono state assegnate, usa il comando docker port:

Terminale

docker port mynginx

L'output sarà simile a questo:

Terminale

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

Yaml

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
      - "8443:443"

Esegui Docker Compose:

Terminal

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.

Terminal

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:

Terminal

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.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION