From 3d8249b4c396738abebec6cd31f5f223673b7adc Mon Sep 17 00:00:00 2001 From: Michael Bridgen Date: Tue, 18 Nov 2014 14:24:44 +0000 Subject: [PATCH] Populate DNS when starting the weaveDNS container --- weave | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/weave b/weave index 6b63d348..5b8d35f2 100755 --- a/weave +++ b/weave @@ -308,6 +308,19 @@ tell_dns() { http_call $1 $DNS_CONTAINER_NAME $DNS_HTTP_PORT /name/$CONTAINER/$WEAVE_ADDR_IP $MORE_ARGS } +# Tell the newly-started weaveDNS about existing weave IPs +populate_dns() { + for CONTAINER in $(docker ps -q); do + MORE_ARGS=$(docker inspect --format '--data-urlencode local_ip={{ .NetworkSettings.IPAddress }} --data-urlencode fqdn={{ .Config.Hostname }}.{{ .Config.Domainname }}.' $CONTAINER 2>/dev/null) && true + if CONTAINER_ADDRS=$(with_container_netns $CONTAINER container_weave_addrs 2>&1) ; then + CONTAINER_IPS=$(echo "$CONTAINER_ADDRS" | grep -o 'inet .*' | sed -e 's/inet \([^/]*\)\/\(.*\)/\1/') + for IP in $CONTAINER_IPS; do + http_call PUT $DNS_CONTAINER_NAME $DNS_HTTP_PORT /name/$CONTAINER/$IP $MORE_ARGS + done + fi + done +} + # Check that a container named $1 with image $2 is not running check_not_running() { case $(docker inspect --format '{{ .State.Running }} {{ .Config.Image }}' $1 2>/dev/null) in @@ -379,9 +392,10 @@ case "$COMMAND" in check_not_running $DNS_CONTAINER_NAME $DNS_IMAGE create_bridge docker_bridge_ip - CONTAINER=$(docker run --privileged -d --name=$DNS_CONTAINER_NAME -p $DOCKER_BRIDGE_IP:53:53/udp -v /var/run/docker.sock:/var/run/docker.sock $DNS_IMAGE "$@" | tail -n 1) - with_container_netns $CONTAINER attach $CIDR >/dev/null - echo $CONTAINER + DNS_CONTAINER=$(docker run --privileged -d --name=$DNS_CONTAINER_NAME -p $DOCKER_BRIDGE_IP:53:53/udp -v /var/run/docker.sock:/var/run/docker.sock $DNS_IMAGE "$@" | tail -n 1) + with_container_netns $DNS_CONTAINER attach $CIDR >/dev/null + populate_dns + echo $DNS_CONTAINER ;; connect) [ $# -eq 1 ] || usage