reti virtuali

This commit is contained in:
dado
2025-08-03 21:06:41 +02:00
parent 5a76f0b30b
commit 117dac37a0

View File

@@ -116,3 +116,48 @@ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6559daa92656 nginx:latest "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 127.0.0.1:32769->80/tcp nginx
```
## Reti virtuali
Per impostazione predefinita, i container Docker sono isolati l'uno dall'altro, il che impedisce la comunicazione diretta tra servizi che operano su stack diversi. Tuttavia, è possibile creare una rete virtuale condivisa tra container di due stack differenti, consentendo loro di comunicare.
La sintassi, per definire un nuovo network è la seguente:
```yml
services:
nginx:
image: 'nginx:latest'
container_name: ${APP_NAME:?err}-nginx
ports:
- '8081:80'
- '8443:443'
volumes:
- './app:/var/www/html'
- './config/nginx:/etc/nginx/conf.d'
networks:
- default # Le reti sotto network non vengono aggiunte alla configurazione di default, ma sostituite. Pertanto, la rete default deve essere specificata esplicitamente
- nginx # Il container nginx farà parte dei seguenti network
networks:
nginx:
name: mynetwork
```
Nel secondo stack, è necessario definire la stessa rete per consentire la comunicazione tra i container:
```yml
services:
debug:
image: ubuntu
entrypoint: "bash -c 'while true; do sleep 1; done'"
networks:
- default
- nginx
networks:
nginx:
name: mynetwork
external: true # La rete è definita esternamente. Se non specificato, verrebbe generato un errore, poiché la rete esiste già e non può essere creata una rete con nome identico
```
In questo modo, è possibile mettere in comunicazione due container di due stack diversi, semplicemente creando una rete virtuale condivisa.