Skip to content

Instantly share code, notes, and snippets.

@webwurst
Created October 28, 2015 21:42
Show Gist options
  • Save webwurst/5d29abcbd6dc34328723 to your computer and use it in GitHub Desktop.
Save webwurst/5d29abcbd6dc34328723 to your computer and use it in GitHub Desktop.
Running a Consul cluster with Docker-in-Docker™
# open a http://fishshell.com/ and enter this:
# start docker daemons
for i in (seq 3)
set name "dind$i"
docker rm -f $name
docker run \
--privileged \
--name $name \
-v "$PWD/var-lib-docker-$name:/var/lib/docker" \
--detach \
docker:1.9-rc-dind \
--storage-driver=overlay
set ip_addr (docker inspect $name | jq -r '.[].NetworkSettings.IPAddress')
echo "$name: $ip_addr"
end
# inspect
docker run --rm --link $name:docker docker:1.9-rc version
docker run --rm --link $name:docker docker:1.9-rc docker ps --all
# start consul
for i in (seq 3)
set name "dind$i"
docker run --rm --link $name:docker docker:1.9-rc \
rm -f consul
if test $name = "dind1"
set dind1_ip_addr (docker inspect $name | jq -r '.[].NetworkSettings.IPAddress')
docker run --rm --link $name:docker docker:1.9-rc \
run -d --name=consul \
-p $dind1_ip_addr:8300:8300 \
-p $dind1_ip_addr:8301:8301 \
-p $dind1_ip_addr:8301:8301/udp \
-p $dind1_ip_addr:8302:8302 \
-p $dind1_ip_addr:8302:8302/udp \
-p $dind1_ip_addr:8400:8400 \
-p $dind1_ip_addr:8500:8500 \
-p $dind1_ip_addr:53:53 \
-p $dind1_ip_addr:53:53/udp \
gliderlabs/consul-server \
-server -advertise $dind1_ip_addr -bootstrap-expect 3
else
set ip_addr (docker inspect $name | jq -r '.[].NetworkSettings.IPAddress')
docker run --rm --link $name:docker docker:1.9-rc \
run -d --name=consul \
-p $ip_addr:8300:8300 \
-p $ip_addr:8301:8301 \
-p $ip_addr:8301:8301/udp \
-p $ip_addr:8302:8302 \
-p $ip_addr:8302:8302/udp \
-p $ip_addr:8400:8400 \
-p $ip_addr:8500:8500 \
-p $ip_addr:53:53 \
-p $ip_addr:53:53/udp \
gliderlabs/consul-server \
-server -advertise $ip_addr -join $dind1_ip_addr
end
end
# inspect
docker run --rm --link $name:docker docker:1.9-rc docker logs consul
# docker run --rm --link $name:docker docker:1.9-rc \
# run --rm gliderlabs/consul-agent members
# consul members
curl $dind1_ip_addr:8500/v1/catalog/nodes | jq .
curl $dind1_ip_addr:8500/v1/catalog/services | jq .
open http://$dind1_ip_addr:8500/ui
# start registrator
for i in (seq 3)
set name "dind$i"
docker run --rm --link $name:docker docker:1.9-rc \
rm -f registrator
set ip_addr (docker inspect $name | jq -r '.[].NetworkSettings.IPAddress')
docker run --rm --link $name:docker docker:1.9-rc \
run -d \
--name=registrator \
--net=host \
--volume=/var/run/docker.sock:/tmp/docker.sock \
gliderlabs/registrator:latest \
consul://$ip_addr:8500
end
# inspect
docker run --rm --link $name:docker docker:1.9-rc docker logs registrator
# start hello-world
for i in (seq 3)
set name "dind$i"
docker run --rm --link $name:docker docker:1.9-rc \
rm -f hello-world
docker run --rm --link $name:docker docker:1.9-rc \
run --name=hello-world -d -p 80 tutum/hello-world
end
# inspect
curl $dind1_ip_addr:8500/v1/catalog/service/hello-world | jq .
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment