Java >> Java tutorial >  >> Tag >> java.net

java.net.UnknownHostException på Docker

I mit tilfælde fejlede java-applikationen med java.net.UnknownHostException når du kører i docker. Årsagen var, at jeg brugte --network=none docker-flag (henter ip/værtsnavn via dhcp og pipework). I dette tilfælde tilføjer docker ikke automatisk til /etc/hosts post som

127.0.0.1 15e326aecf84

Og getCanonicalHostName() Java-funktion kastede denne undtagelse.

Mulige løsninger:

  • tilføj værtsnavn til /etc/hosts fil via docker run parameter --hostname=your-hostname.com
  • skift til docker-administreret netværkskonfiguration

Det lykkedes mig at slippe af med DNS-problemerne ved at skifte til Oracle JRE 8 og bruge følgende hack i Dockerfilen:

RUN echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf

Jeg oprettede en fungerende Java 8 docker-container på Docker Hub (koden er på github).


Java tag