Le porte dei container sono porte di rete specifiche che possono essere collegate a servizi o applicazioni specifici all'interno di un container.
Ogni contenitore può avere le proprie porte, che possono essere usate per comunicare con il mondo esterno o con altri contenitori. Quando si avvia un contenitore, è possibile specificare quali porte devono essere disponibili all'interno del contenitore e quali porte devono essere inoltrate alla macchina host.
ports:
external_port:Internal port
Per esempio, inoltriamo la porta 80 come 8094:
docker-nginx:
image: nginx
ports:
- '8094:80'
Quando il contenitore è in esecuzione, l'applicazione al suo interno può ascoltare o inviare dati attraverso la porta appropriata. Gli utenti possono interagire con l'applicazione accedendo alla porta del contenitore che è stata inoltrata alla macchina host.
Per avviare le porte del contenitore, è necessario utilizzare il comando docker run
con il flag -p
o --publish
.
La sintassi del comando docker run con il flag -p
è la seguente:
docker run -p <host port>:<container port> <image_name>
Dove:
<porta host> è la porta dell'host che sarà proxata alla porta del contenitore.
<porta del contenitore> - la porta del contenitore a cui si accederà attraverso la porta dell'host specificata.
<nome_immagine> - il nome dell'immagine del contenitore che si vuole eseguire.
Ad esempio, per avviare un contenitore con un server web sulla porta 80 e proxy sulla porta 8080 dell'host, si può usare il seguente comando:
docker run -p 8080:80 nginx
Il server web in esecuzione nel contenitore sarà ora accessibile sulla porta 8080 dell'host.
È anche possibile utilizzare un intervallo di porte specificando più coppie <porta-host>:<porta-contenitore>.
Ad esempio:
docker run -p 8080-8082:80-82 nginx
In questo modo le porte 80, 81 e 82 del contenitore saranno proxy delle porte 8080, 8081 e 8082 dell'host, rispettivamente. Una volta avviato il contenitore con le porte proxy, sarà possibile accedervi attraverso le porte host specificate.