Skip to content

orcinus/docker-dns

 
 

Repository files navigation

docker-dns

Run a dns proxy in docker with wildcard host support

This is intended to be used within (but not limited to) a local docker development environment, typically in combination with some type of reverse proxy that supports virtualhosts like nginx. In this configuration, docker-dns allows you to simplify local container access by automatically setting up easier doamins like hello.docker

Quickstart:

docker run -p 53:53/udp -d --restart always 0rcinus/docker-dns

Once this container is running, configure your system to route DNS queries through localhost and you're all set.

Configuration:

docker-dns can be configured through the use of a few environment variables:

  • -e PORT=${PORT:-53} sets the port the DNS server will listen on

  • -e EXTERNAL_DNS=${IP:-8.8.8.8} sets the DNS server to which queries that cannot be resolved locally are proxied

  • -e HOSTS_FILE=${FILE:-/etc/docker-dns/hosts} -v $FILE:$FILE sets the host file to read for resolving queries locally. This should look like a typical /etc/hosts file, but additionally supports wildcard entries. The default hosts file included in this image is shown below, but you are free to mount your own:

    127.0.0.1 		*.docker
    192.168.99.100 	*.rancher
    

Using with a reverse proxy

jwilder/nginx-proxy makes this really easy:

docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --restart always jwilder/nginx-proxy

Note:

Your system may have a default web server already running on port 80. If that's the case you'll either need to disable it or choose a different port. If you're on mac and aren't using the default apache server you can disable it with

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Now, you can start up any container with VIRTUAL_HOST set to a docker domain and access it from the browser without having to expose/keep track of all the different ports you're using!

docker run -d -p 80 -e VIRTUAL_HOST=hello.docker -e VIRTUAL_PORT=80 tutum/hello-world && open http://hello.docker

#winning

Acknowlegements

DNS proxy code shamelessly copied from hubdotcom/marlon-tools. Thanks for the great work! This is a fork of the original at finboxio/docker-dns that was missing the HOSTS_FILE feature as well as any kind of hosts loading from disk (it was using hard-coded entries). The author appears to have deserted the project and is not accepting PRs.

About

Easy wildcard dns for local dev with docker

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 65.5%
  • Makefile 30.2%
  • Dockerfile 4.3%