Hey.
If you didin't get the instructions on the git repo of DnsDock, let's take a step back.
Follow these steps to install DNSDock on your Ubuntu machine:
It's better to set an address, cause docker can change addresses between versions. We need to edit /lib/systemd/system/docker.service
Use the editor of your choice. I like vim: sudo vim /lib/systemd/system/docker.service
Add these two options after "... -H fd://" on the ExecStart directive. The options are: --bip=172.17.42.1/24 --dns=172.17.42.1
In addition to BIP, we are telling docker to use the same address as DNS: Any discovery will pass through this address.
Restart daemons: sudo systemctl daemon-reload
Restart docker: sudo systemctl restart docker
This step is optional. I like to access containers via their addresses, like: service1.bleh.dev, xxx.service.docker, db.enterprise.rgs...
To make it work, edit /etc/resolvconf/resolvconf.d/head
. So edit that file and add: nameserver 172.17.42.1
. Note that is the same address as DNS option set on step #1
Update resolvconf: sudo resolvconf -u
sudo docker run --rm -d -v /var/run/docker.sock:/var/run/docker.sock --name dnsdock -p 172.17.42.1:53:53/udp tonistiigi/dnsdock
Relate to the git repo to have more options. Note that I'm using --rm
instead of -d
to force container removal after I stop them. It's useful when testing the various options of DnsDock.
I found that docker0 default address, on Ubuntu 16.04 and docker 1.11, is 172.18.0.1
. I made it work with that address first.
To know what is the adress of docker0 run route
. A list of network addresses will come up. docker0 -> 172.18.0.0
Using ifconfig
you can get more info on the docker0 interface, like the connection ip address. Simply the first available ip on the network: 172.18.0.1
Some docker versions ago, the default bridge address was different. Was something like: 172.17.42.1
route
:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.25.1 0.0.0.0 UG 600 0 0 wlp3s0
link-local * 255.255.0.0 U 1000 0 0 docker0
172.18.0.0 * 255.255.0.0 U 0 0 0 docker0
192.168.25.0 * 255.255.255.0 U 600 0 0 wlp3s0
ifconfig
:
docker0 Link encap:Ethernet HWaddr 02:42:95:09:db:39
inet addr:172.18.0.1 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:95ff:fe09:db39/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:76 errors:0 dropped:0 overruns:0 frame:0
TX packets:45 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6057 (6.0 KB) TX bytes:4248 (4.2 KB)
After making it work (we pay the price of our stupidity), I've found some good sources to take another step:
-
Running DnsDock on Docker development environment - by James Moey: Here is shown how to make it work on a more low level way. We will create a service for dnsdock and make docker depend on it!
-
Better Docker Container Management with DNSDock - by Kurtis Kemple (MLS): Here is shown how to make it work on OSX and how to use with docker-compose.
Thanks Tõnis Tiigi for the awesome work!!!