diff --git a/site/proxy.md b/site/proxy.md
index 5321aacb..ef860122 100644
--- a/site/proxy.md
+++ b/site/proxy.md
@@ -9,7 +9,8 @@ layout: default
* [Setup](#setup)
* [Usage](#usage)
* [Automatic IP address assignment](#ipam)
- * [Usage with WeaveDNS](#usage-with-weavedns)
+ * [Automatic discovery](#dns)
+ * [Multi-host example](#multi-host)
* [Usage with TLS](#usage-with-tls)
## Advantages
@@ -100,21 +101,55 @@ gets attached to the weave network with an automatically assigned IP
address. Containers started with a `WEAVE_CIDR` environment variable
are handled as before.
-## Usage with WeaveDNS
+## Automatic discovery
-Containers started via the proxy can be automatically configured to
-use WeaveDNS for name resolution. To accomplish this we need to launch
-the proxy with the `--with-dns` option
+Containers started via the proxy are automatically registered in
+[weaveDNS](weavedns.html) if they have a hostname in the weaveDNS
+domain (usually `.weave.local`). In order for containers to be able to
+look up such names, their DNS resolver needs to be configured to point
+at weaveDNS. This can be done [manually](weavedns.html#without-run),
+or automatically by the proxy by launching it with the `--with-dns`
+option, i.e.
- host1$ weave launch
- host1$ weave launch-dns 10.2.254.1/24
host1$ weave launch-proxy --with-dns
-With this done, any containers connected via IPAM or `WEAVE_CIDR=...`,
-which are launched through the proxy will use weaveDNS for name
-resolution. WeaveDNS is used in addition to any dns servers specified
-via the `--dns` option. More details on weaveDNS can be found in the
-[weaveDNS documentation](weavedns.html).
+Now any containers started via the proxy, and with a `WEAVE_CIDR=...`
+environment variable (or even without it, if IPAM is
+[configured](#ipam)), will use weaveDNS for name resolution.
+
+## Multi-host example
+
+Here's a complete example of using weave proxies configured with
+[automatic IP address assignment](#ipam) and
+[automatic discovery](#dns) to start containers on two hosts such that
+they can reach each other by name.
+
+First, let us start weave, weaveDNS and the proxy, and set DOCKER_HOST
+to point at the latter:
+
+ host1$ weave launch -iprange 10.2.3.0/24
+ host1$ weave launch-dns 10.2.4.1/24
+ host1$ weave launch-proxy --with-ipam --with-dns
+ host1$ export DOCKER_HOST=localhost:12375
+
+ host2$ weave launch -iprange 10.2.3.0/24 host1
+ host2$ weave launch-dns 10.2.4.2/24
+ host2$ weave launch-proxy --with-ipam --with-dns
+ host2$ export DOCKER_HOST=localhost:12375
+
+NB: Note that the two weaveDNS instances must be given unique IPs, on
+a subnet different from that used for IP allocation.
+
+Now let us start a couple of containers, and ping one from the other,
+by name.
+
+ host1$ docker run -h pingme.weave.local -dti ubuntu
+
+ host2$ docker run -h pinger.weave.local -ti ubuntu
+ root@pinger:/# ping pingme
+ PING pingme.weave.local (10.2.3.1) 56(84) bytes of data.
+ 64 bytes from pingme.weave.local (10.2.3.1): icmp_seq=1 ttl=64 time=0.047 ms
+ ...
## Usage with TLS