Files
learning/docker/008-networking.md
2025-08-01 21:51:33 +02:00

37 lines
2.4 KiB
Markdown

# Networking
## Concetti base
I container, per impostazione predefinita, sono completamente isolati dal sistema host e tra di loro. Per consentire la comunicazione tra i container e il sistema host, è necessario aprire esplicitamente una determinata porta, rendere disponibile una risorse, ecc.
Per esporre una porta, si utilizza l'opzione `-p` con la seguente sintassi:
```bash
docker run -d -p 8080:80 nginx
```
In questo esempio, la porta 80 del container viene mappata sulla porta 8080 del sistema host. Ciò significa che le richieste inviate alla porta 8080 dell'host verranno inoltrate alla porta 80 del container, dove il servizio nginx è in ascolto.
```bash
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f00ddc2a0b6a nginx "/docker-entrypoint.…" 13 seconds ago Up 13 seconds 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp interesting_meninsky
```
Se si desidera servire contenuti web, è possibile utilizzare l'opzione `-v` (*volume*) per mappare un contenuto all'interno del container. La sintassi è simile alla precedente:
```bash
docker run -d -p 8080:80 -v /path/to/my/webcontent:/usr/share/nginx/html nginx
```
In questo caso, il contenuto presente nella directory */path/to/my/webcontent* del sistema host sarà disponibile all'interno del container nella directory */usr/share/nginx/html*.
## Tipologie
Esistono diverse tipologie di networking che possono essere utilizzate in Docker, denominate `driver`. I tre driver principali sono:
- `host`: in questa modalità, il container condivide l'interfaccia di rete con il sistema host. Non vi è alcun isolamento, pertanto qualsiasi processo eseguito all'interno del container ha accesso diretto alla rete dell'host. Questo tipo di accesso alla rete è analogo a quello di un browser web su un sistema operativo
- `bridge`: questo driver fornisce isolamento tra l'host e i container, consentendo la creazione di reti virtuali. Tali reti operano in uno spazio di indirizzamento separato rispetto al sistema host e alla rete fisica, permettendo ai container di comunicare tra loro in modo privato o semi-privato. Questa è la modalità preferita per la maggior parte delle applicazioni Docker
- `null`: in questa configurazione, il container è completamente isolato dalla rete, non avendo alcuna connettività di rete disponibile