Container cannot reach its own published port via host external IP address (hairpin NAT failure). – Docker HAIRPIN_NAT_FAIL

HAIRPIN_NAT_FAIL

Un container tenta di contattare un altro servizio (o se stesso) utilizzando l'indirizzo IP esterno dell'host e la porta pubblicata anziché il nome del servizio DNS interno alla rete bridge.

Cosa significa questo errore?

Un container tenta di contattare un altro servizio (o se stesso) utilizzando l'indirizzo IP esterno dell'host e la porta pubblicata anziché il nome del servizio DNS interno alla rete bridge.

Messaggio originale

Container cannot reach its own published port via host external IP address (hairpin NAT failure).

Contesto e parole chiave

Alias

  • container cannot reach own port via host IP
  • hairpin NAT Docker

Messaggi alternativi

  • container non raggiunge la propria porta pubblicata tramite IP host hairpin NAT

Prodotti

  • Docker Engine / Docker Compose / BuildKit / containerd

Piattaforme

  • Docker Desktop su macOS
  • Docker Desktop su Windows
  • Linux

Parole chiave

  • compose
  • container
  • docker
  • docker.network.bridge-hairpin-nat-disabled
  • errore-docker-hairpin-nat-self-reach-failed
  • HAIRPIN_NAT_FAIL
  • Network

Cause possibili

Origine del problema per Docker Network: mancata risoluzione Hairpin NAT (connessione a se stesso tramite IP host)

Un container tenta di contattare un altro servizio (o se stesso) utilizzando l'indirizzo IP esterno dell'host e la porta pubblicata anziché il nome del servizio DNS interno alla rete bridge.

molto comune

Diagnosi

Diagnostica container e log per Docker Network: mancata risoluzione Hairpin NAT (connessione a se stesso tramite IP host)

Eseguire comandi di ispezione dei container e controllare i log del demone Docker con journalctl o docker logs.

Come leggere il risultato. Mostra le eccezioni a runtime dell'applicazione, segnali di terminazione o errori di rete interna.

docker
docker logs --tail 50 <container_id>

Risoluzione

Procedura di risoluzione per Docker Network: mancata risoluzione Hairpin NAT (connessione a se stesso tramite IP host)

Difficoltà: mediaRischio: basso

Applicare la configurazione raccomandata nelle specifiche ufficiali Docker e BuildKit.

  1. Ispezionare i parametri di avvio nel file Dockerfile o docker-compose.yml
  2. Verificare i vincoli di memoria, permessi e compatibilità delle porte
  3. Riavviare il container o eseguire una compilazione pulita senza cache

Domande frequenti

Come risolvere il problema HAIRPIN_NAT_FAIL in Docker?

Un container tenta di contattare un altro servizio (o se stesso) utilizzando l'indirizzo IP esterno dell'host e la porta pubblicata anziché il nome del servizio DNS interno alla rete bridge.

Approfondimenti

Schede correlate