java.net.UnknownHostException on Docker

In my case the java application was failing with java.net.UnknownHostException when running in docker. The reason was that I used --network=none docker flag (getting ip/hostname via dhcp and pipework). In this case, docker does not add automatically to /etc/hosts entry like

127.0.0.1 15e326aecf84

And getCanonicalHostName() Java function threw this exception.

Possible solutions:

  • add hostname entry to /etc/hosts file via docker run parameter --hostname=your-hostname.com
  • switch to docker-managed network configuration

I managed to get rid of the DNS issues by switching to Oracle JRE 8 and using the following hack in the Dockerfile:

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

I created a working Java 8 docker container container on Docker Hub (the code is on github).

Tags:

Docker

Java

Dns