Stack

EXPOSE non pubblica la porta

Il 25 ottobre 2026 la Dockerfile reference dice che EXPOSE documenta la porta e non la pubblica. A pubblicarla è docker run -p. -P pubblica le porte esposte su porte alte, e TCP e UDP non condividono la porta dell’host.

4 min di lettura

EXPOSE non pubblica la porta
In questa guida (6)
  1. 1Cosa dice il paragrafo EXPOSE
  2. 2EXPOSE, -p e -P
  3. 3La rete che non ha bisogno della pubblicazione
  4. 4Cosa questa istruzione non è
  5. 5Errori da evitare
  6. 6In sintesi

Il 25 ottobre 2026 EXPOSE non pubblica una porta. La Dockerfile reference, con dateModified 8 ottobre 2026 alle 01:41:54 (+02:00) e riletta oggi, lo scrive nel paragrafo dell’istruzione. Non ho eseguito docker run e non ho aperto un container. composer install, npm ci e PHP 8.5 restano pezzi già pubblicati.

In breve: EXPOSE informa Docker che il container ascolta quelle porte a runtime. Il protocollo, se manca, è TCP. L’istruzione non pubblica. Pubblica -p su docker run, che mappa. -P pubblica tutte le porte esposte e le mappa su porte alte ed effimere. TCP e UDP, in quel caso, non escono sulla stessa porta dell’host.

Cosa dice il paragrafo EXPOSE

La reference, nella scheda dell’istruzione, scrive che EXPOSE informa Docker che il container ascolta sulle porte di rete indicate, a runtime. Si può dichiarare TCP o UDP. Se il protocollo manca, il default è TCP. La frase successiva è il punto: l’istruzione non pubblica davvero la porta. Funziona come documentazione fra chi costruisce l’immagine e chi avvia il container, sulle porte che si intende pubblicare.

Per pubblicare, la stessa pagina manda a docker run -p, che pubblica e mappa una o più porte, oppure a -P, che pubblica tutte le porte esposte e le mappa su porte alte. L’esempio UDP in pagina è EXPOSE 80/udp. Per averle entrambe servono due righe, EXPOSE 80/tcp e EXPOSE 80/udp. Con -P, scrive la pagina, la porta esce una volta per TCP e una per UDP, e le due non usano la stessa porta dell’host, perché -P pesca una porta effimera alta.

Si può ignorare EXPOSE all’avvio. La pagina dice che, a prescindere da ciò che è stato esposto, -p sovrascrive. L’esempio è docker run -p 80:80/tcp -p 80:80/udp.

EXPOSE, -p e -P

CosaCosa fa, secondo la reference di oggiCosa non fa
EXPOSEDocumenta le porte su cui il container ascolta. Default TCPNon pubblica la porta sull’host
docker run -pPubblica e mappa una o più porte. Può sovrascrivere EXPOSENon è un’istruzione del Dockerfile
docker run -PPubblica tutte le porte esposte, su porte alte ed effimereNon tiene TCP e UDP sulla stessa porta dell’host

Più sopra, nella stessa reference, c’è una nota generale: l’istruzione non è case-sensitive, ma la convenzione è il maiuscolo, per distinguerla dagli argomenti. Non è una regola speciale di EXPOSE. La pagina elenca EXPOSE anche fra le istruzioni che accettano variabili d’ambiente sostituite dal builder, non dalla shell. Non ho provato una sostituzione.

La rete che non ha bisogno della pubblicazione

In coda al paragrafo, la reference scrive che docker network crea reti su cui i container si parlano senza esporre o pubblicare porte, perché chi è sulla stessa rete può usare qualunque porta. Rimanda all’overview di quella funzione. Oggi non ho aperto quella overview e non descrivo un driver. Il punto che sta in questo paragrafo è uno solo: la pubblicazione verso l’host e il traffico fra container sulla stessa rete non sono la stessa cosa.

Cosa questa istruzione non è

composer install non è EXPOSE. npm ci non pubblica una porta. PHP 8.5 non è un’istruzione di Dockerfile. Non ho riletto quei tre pezzi per questo articolo. Non ho misurato una porta in ascolto.

Errori da evitare

  • Credere che EXPOSE 80 renda il servizio raggiungibile dall’host. La reference dice che non pubblica.

  • Usare -P e aspettarsi la porta 80 sull’host. -P mappa su una porta alta ed effimera.

  • Mettere TCP e UDP in una riga sola e dare per scontato che -P li faccia uscire insieme. La pagina chiede due righe, e due porte diverse sull’host.

  • Trattare EXPOSE come un tetto. -p, all’avvio, può pubblicare altro.

  • Aprire una porta sull’host per far parlare due container sulla stessa rete. La pagina dice che, su quella rete, non serve.

In sintesi

Il 25 ottobre 2026 la Dockerfile reference, aggiornata l’8 ottobre 2026, dice che EXPOSE documenta le porte e non le pubblica. Il default è TCP. Pubblicare è docker run -p, oppure -P per tutte le porte esposte, su porte alte. TCP e UDP vogliono due righe e, con -P, due porte dell’host. Sulla stessa rete Docker i container si parlano anche senza pubblicazione. Non ho avviato un container.

Foto di copertina: H. Zell, gru del container terminal di Bremerhaven, Wikimedia Commons, CC BY-SA 3.0. È un porto, non un Dockerfile e non una porta pubblicata.

Domande frequenti

No. La reference letta il 25 ottobre 2026 dice che l’istruzione non pubblica la porta. È documentazione fra chi costruisce l’immagine e chi avvia il container.
-p pubblica e mappa le porte che indichi, e può sovrascrivere EXPOSE. -P pubblica tutte le porte esposte e le mappa su porte alte ed effimere.
No. Se non lo scrivi, la pagina dice che il default è TCP. UDP si dichiara, per esempio EXPOSE 80/udp. TCP e UDP insieme vogliono due righe.
No. La reference dice che -P usa una porta effimera alta, e che TCP e UDP non usano la stessa porta dell’host.
Non per parlarsi fra loro. La stessa pagina dice che, sulla rete creata con docker network, comunicano su qualunque porta senza pubblicare. Non ho aperto l’overview dei driver.

Potrebbe interessarti anche...

Hai bisogno di scegliere una webagency per il tuo progetto?

Abbiamo la soluzione giusta

Parliamone
  • Consulenza specializzata
  • Soluzioni su misura
  • Risultati concreti

Tecnologialiberaper tutti

Hai bisogno d'aiuto?

Parla con noi. Il nostro supporto è attivo tutti i giorni dalle 9 alle 18

+390835239514 Chiamaci

Crea il tuo eCommerce

Creiamo eCommerce su misura senza farti spendere un patrimonio

info@roxxoitalia.com Scopri il nostro CMS

Crea il tuo sito web

Siti web già pronti per andare online. Vuoi saperne di più? Contattaci

info@roxxoitalia.com Scrivici