2

I'm currently trying to get lookup hostnames from inside a docker container using python. My example script is exceedingly simple, so here we go:

import sockets
print(socket.gethostbyaddr('8.8.8.8'))

It works fine from my Windows machine, and it works fine from the Ubuntu instance using WSL2. However, inside the Docker container, no dice. I've verified that it has internet access, it should be able to reach all the same servers my physical machine can access, and I've verified that by pinging those servers from inside the docker container.

However simply looking up the hostname of an IP doesn't work. Any advice?

Edit: The docker container I am running is based on Debian Bullseye

Edit 2: Executing nslookup inside the container is not able to resolve the hostnames either. Do I need to specify a DNS server inside the container?

Edit 3: I got a lot closer to actually solve it. The default nameserver in my resolv.conf is unable to resolve those lookups.

However checking what which nameserver my Ubuntu/Windows use, and manually setting it to be used inside of docker enabled me to at least use nslookup.

So echo "nameserver [ip of host nameserver]" > /etc/resolv.conf got me mostly there.

Lucy The Brazen
  • 135
  • 1
  • 9

1 Answers1

1

Okay, I've found the proper solution.

Obviously the proper way to do is, is to add the add --dns [ip of host nameserver] to the docker run arguments.

Edit: Or change it inside the python script in order to not need any arguments other than run to properly start the container for ease of use.

Lucy The Brazen
  • 135
  • 1
  • 9