Usage Run some containers:
% docker run -d --name foo ubuntu bash -c "sleep 600" Start up dockerdns:
% docker run -d --name dns -v /var/run/docker.sock:/docker.sock phensley/docker-dns
--domain example.com
If your Docker instance uses TLS:
% docker run --name dns -e DOCKER_HOST=https://: --rm phensley/docker-dns --domain example.com Start more containers:
% docker run -d --name bar ubuntu bash -c "sleep 600" Check dockerdns logs:
% docker logs dns 2014-10-08T20:45:37.349161 [dockerdns] table.add dns.example.com -> 172.17.0.3 2014-10-08T20:45:37.351574 [dockerdns] table.add foo.example.com -> 172.17.0.2 2014-10-08T20:45:37.351574 [dockerdns] table.add bar.example.com -> 172.17.0.4 Query for the containers by hostname:
% host foo.example.com 172.17.0.3 Using domain server: Name: 172.17.0.3 Address: 172.17.0.3#53 Aliases:
foo.example.com has address 172.17.0.2 Query by IP address:
% host 172.17.0.2 172.17.0.3 Using domain server: Name: 172.17.0.3 Address: 172.17.0.3#53 Aliases:
2.0.17.172.in-addr.arpa domain name pointer bar.example.com. 2.0.17.172.in-addr.arpa domain name pointer 5046e96685a2.example.com. Use dns container as a resolver inside a container:
% docker run -it --dns $(docker inspect -f '{{.NetworkSettings.IPAddress}}' dns)
--dns-search example.com ubuntu bash
💡 Tip:As we don't add -d option, we will login this docker container. And the following steps are done in this docker container.
root@95840788bf08:/# cat /etc/resolv.conf nameserver 172.17.0.3 search example.com
root@95840788bf08:/# ping foo PING foo.example.com (172.17.0.2) 56(84) bytes of data. 64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.112 ms 64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.112 ms Names not rooted in example.com will be resolved recursively using Google's resolver 8.8.8.8 by default:
root@95840788bf08:/# ping github.com PING github.com (192.30.252.128) 56(84) bytes of data. 64 bytes from 192.30.252.128: icmp_seq=1 ttl=61 time=21.3 ms To disable recursive resolution, use the --no-recursion flag:
% docker run --name dns -v /var/run/docker.sock:/docker.sock phensley/docker-dns
--domain example.com --no-recursion
Now names not rooted in example.com will fail to resolve:
% docker run -it --dns $(docker inspect -f '{{.NetworkSettings.IPAddress}}' dns)
--dns-search example.com ubuntu bash
root@4d15342387b0:/# ping github.com
ping: unknown host github.com
Pointing a subdomain to some IP
% docker run --name dns -v /var/run/docker.sock:/docker.sock phensley/dock$ --domain example.com --record localhost:127.0.0.1
Pointing all subdomains to some IP
% docker run --name dns -v /var/run/docker.sock:/docker.sock phensley/doc$ --domain example.com --record *:172.18.0.4
Content type
Image
Digest
Size
21.3 MB
Last updated
about 7 years ago
docker pull liuhh/dns