Skip to content

Instantly share code, notes, and snippets.

@sykesm
Created January 5, 2016 17:37
Show Gist options
  • Save sykesm/0791fb90b0b88daa35b4 to your computer and use it in GitHub Desktop.
Save sykesm/0791fb90b0b88daa35b4 to your computer and use it in GitHub Desktop.
docker-overlay.sh
#!/bin/bash
set -e -x
# Create the key-value store
docker-machine create -d vmwarefusion mh-keystore
docker $(docker-machine config mh-keystore) run -d -p "8500:8500" -h "consul" progrium/consul -server -bootstrap
# Create the swarm master
docker-machine create -d vmwarefusion --vmwarefusion-cpu-count=2 \
--swarm \
--swarm-master \
--swarm-image="swarm" \
--swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" \
--engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" \
--engine-opt="cluster-advertise=eth0:2376" \
mhs-demo0
# Create swarm slave #1
docker-machine create -d vmwarefusion --vmwarefusion-cpu-count=2 \
--swarm \
--swarm-image="swarm" \
--swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" \
--engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" \
--engine-opt="cluster-advertise=eth0:2376" \
mhs-demo1
# Create swarm slave #2
docker-machine create -d vmwarefusion --vmwarefusion-cpu-count=2 \
--swarm \
--swarm-image="swarm" \
--swarm-discovery="consul://$(docker-machine ip mh-keystore):8500" \
--engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500" \
--engine-opt="cluster-advertise=eth0:2376" \
mhs-demo2
docker-machine ls
# Point to the swarm master
eval $(docker-machine env --swarm mhs-demo0)
docker info
# Create the overlay network
docker network create \
-d overlay \
--subnet=10.10.1.4/30 \
--subnet=10.10.1.8/30 \
--subnet=10.10.1.12/30 \
--subnet=10.11.0.0/16 \
my-net
# Display the network
docker network inspect my-net
# run tcpdump on the swarm nodes
mkdir -p $HOME/tcpdump
docker run -itd --name=tcpdump0 --net=host -v $HOME/tcpdump:/data --env="constraint:node==mhs-demo0" corfr/tcpdump -i any -w /data/mhs-demo0.pcap
docker run -itd --name=tcpdump1 --net=host -v $HOME/tcpdump:/data --env="constraint:node==mhs-demo1" corfr/tcpdump -i any -w /data/mhs-demo1.pcap
docker run -itd --name=tcpdump2 --net=host -v $HOME/tcpdump:/data --env="constraint:node==mhs-demo2" corfr/tcpdump -i any -w /data/mhs-demo2.pcap
# run web servers on mhs-demo0 and mhs-demo1
docker run -itd --name=web0 --net=my-net --env="constraint:node==mhs-demo0" nginx
docker run -itd --name=web1 --net=my-net --env="constraint:node==mhs-demo1" nginx
docker run -it --rm --net=my-net --env="constraint:node==mhs-demo2" busybox wget -O- http://web0
docker run -it --rm --net=my-net --env="constraint:node==mhs-demo2" busybox wget -O- http://web1
docker kill mhs-demo0/tcpdump0 mhs-demo1/tcpdump1 mhs-demo2/tcpdump2
docker-machine rm mhs-demo0 mhs-demo1 mhs-demo2 mh-keystore
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment