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:
1 parent
6d1792ebdf
commit
95430cb528
1 file changed
+10
-2
@@ -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
|
||||
|
||||
Reference in new issue
Block a user