Make weaveDNS use the docker bridge IP instead of its own

This means the `--dns` setting for containers will work even if the
weavedns container is restarted (and assigned a new docker network
IP).
This commit is contained in:
Michael Bridgen committed 2014-11-21 16:23:56 +00:00
1 parent 6d1792ebdf
commit 95430cb528
1 file changed
+10 -2
+10 -2
View File
@@ -46,6 +46,7 @@ MTU=65535
PORT=6783
HTTP_PORT=6784
DNS_HTTP_PORT=6785
DOCKER_BRIDGE=${DOCKER_BRIDGE:-docker0}
COMMAND=$1
@@ -139,6 +140,11 @@ destroy_bridge() {
run_iptables -t nat -X WEAVE >/dev/null 2>&1 || true
}
docker_bridge_ip() {
DOCKER_BRIDGE_IP=$(ip -4 addr show $DOCKER_BRIDGE | grep -o 'inet [.0-9]*')
DOCKER_BRIDGE_IP=${DOCKER_BRIDGE_IP#inet }
}
# the following borrows from https://github.com/jpetazzo/pipework
# run args $2 $3 ... as a command in the network namespace of container $1
@@ -369,7 +375,8 @@ case "$COMMAND" in
shift 1
check_not_running $DNS_CONTAINER_NAME $DNS_IMAGE
create_bridge
CONTAINER=$(docker run --privileged -d --name=$DNS_CONTAINER_NAME -v /var/run/docker.sock:/var/run/docker.sock $DNS_IMAGE "$@" | tail -n 1)
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
;;
@@ -407,7 +414,8 @@ case "$COMMAND" in
CIDR=$1
shift 1
create_bridge
DNS_ARG=$(docker inspect --format '--dns {{ .NetworkSettings.IPAddress }}'" --link $DNS_CONTAINER_NAME:$DNS_CONTAINER_NAME" $DNS_CONTAINER_NAME 2>/dev/null) || true
docker_bridge_ip
DNS_ARG="--dns $DOCKER_BRIDGE_IP"
DNS_SEARCH_ARG="--dns-search=."
for arg in $@; do
case $arg in