Port publishing
Se in un'immagine si trova un applicativo che apre una porta di rete, l'immagine espone (expose) tale porta di rete.
Quando dallo host lanciamo un container di quell'immagine occorre pubblicare (publish) tale porta di rete.
Con il comando ip
scopriamo l'indirizzo IP della macchina host e chiamiamolo IPH.
Scarichiamo un'immagine che espone la porta 8080 e lanciamone un container.
NB
- Il fatto che l'immagine scaricata apra la porta 8080 non è conoscenza innata, ma ricavato dalla documentazione che l'autore dell'immagine ha fornito. Nel
Dockerfile
(cf. ultra) di quell'immagine l'autore aveva specificato il parametroEXPOSE 8080
. - Inoltre il programma eseguibile -- in questo caso un web server -- che era stato inserito nell'immagine, era in ascolto sulla porta 8080.
- Quando si usano immagini scaricate dal Docker Hub è necessario:
- avere la loro documentazione
- fidarsi che non compiano operazioni malefiche
docker run -d -p 8080 adejonge/helloworld
Avviene il Port Publishing parziale della porta 8080 del container ad una porta casuale della macchina host
Verificare il container con:
docker ps
Dal rapporto scopriamo la porta dello host che mappa al container, indichiamola con PH:
0.0.0.0:PH -> 8080/tcp
L'indirizzo IP 0.0.0.0
copre qualsiasi indirizzo IP della macchina host, sia quelli esterni che localhost
.
Dallo host, o da qualsiasi altra macchina della rete su cui è lo host, puntare il browser a:
http://
IPH
:PH
/
Il messaggio viene visualizzato
Terminare e cancellare il contenitore precedente:
docker ps
docker rm -f
ID
Lanciare un container con Port Publishing completo:
docker run -d -p 8000:8080 adejonge/helloworld
Publish della porta 8080 del container alla porta 8000 dello host
Verificare col browser a http://localhost:8000
Infatti a qualsiasi indirizzo su cui lo host è in ascolto