The weaveDNS service running on every host acts as the nameserver for
containers on that host. It learns about hostnames for local containers
from the proxy and from the
weave attach command.
If a hostname is in the
.weave.local domain, then weaveDNS records the association of that
name with the container’s Weave Net IP address(es) in its in-memory
database, and then broadcasts the association to other Weave Net peers in the
When weaveDNS is queried for a name in the
.weave.local domain, it
looks up the hostname in its memory database and responds with the IPs
of all containers for that hostname across the entire cluster.
When weaveDNS is queried for a name in a domain other than
.weave.local, it queries the host’s configured nameserver, which is
the standard behaviour for Docker containers.
Specifying a Different Docker Bridge Device
So that containers can connect to a stable and always routable IP
address, weaveDNS listens on port 53 to the Docker bridge device, which
is assumed to be
docker0. Some configurations may use a different
Docker bridge device. To supply a different bridge device, use the
$ sudo DOCKER_BRIDGE=someother weave launch
In the event that weaveDNS is launched in this way, it’s important that
other calls to
weave also specify the bridge device:
$ sudo DOCKER_BRIDGE=someother weave attach ...