Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@ioggstream
Created August 31, 2015 15:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ioggstream/8a5dff72460c157dea78 to your computer and use it in GitHub Desktop.
Save ioggstream/8a5dff72460c157dea78 to your computer and use it in GitHub Desktop.
Create a swarm with overlay network - virtualbox.
unset DOCKER_HOST DOCKER_MACHINE_NAME DOCKER_MACHINE_NAME DOCKER_TLS_VERIFY DOCKER_CERT_PATH
export SWARM_TOKEN=$(cat swarm.token)
echo $SWARM_TOKEN
CONSUL_IP=$(docker-machine ip consul)
_cluster="A"
_master=${_cluster}-0
_cert_home="$HOME/.docker/machine/machines/${_master}"
# create swarm master and copy certs in .docker folder
docker-machine create -d virtualbox --virtualbox-boot2docker-url=./boot2docker-1.8.iso \
--engine-opt="default-network=overlay:multihost" \
--engine-opt="kv-store=consul:$(docker-machine ip consul):8500" \
--engine-label="com.docker.network.driver.overlay.bind_interface=eth1" \
${_master}
#docker-machine scp -r ~/.docker/machine/machines/A-0/ A-0:/home/docker/.docker/
for f in ${_cert_home}/{server.pem,server-key.pem,ca.pem}; do
docker-machine ssh ${_master} "
mkdir /home/docker/.docker/${_master}/;
chown docker:docker /home/docker/.docker/${_master}/;
"
docker-machine scp -r "$f" ${_master}:/home/docker/.docker/${_master}/
done
# create the swarm processes with bridge.
docker $(docker-machine config ${_master}) run -d \
--restart="always" \
--net="bridge" \
swarm:latest join --addr "$(docker-machine ip ${_master}):2376" "token://$SWARM_TOKEN"
# Map cluster certs to Swarm container.
docker $(docker-machine config ${_master}) run -d \
--restart="always" \
--net="bridge" \
-p "3376:3376" \
-v "/home/docker/.docker/${_master}:/etc/docker" \
swarm:latest manage \
--tlsverify --tlscacert="/etc/docker/ca.pem" \
--tlscert="/etc/docker/server.pem" --tlskey="/etc/docker/server-key.pem" \
-H "tcp://0.0.0.0:3376" \
--strategy spread "token://$SWARM_TOKEN"
#
# Add further nodes.
#
for _nid in {1..1}; do
_hostid=${_cluster}-${_nid}
docker-machine create -d virtualbox --virtualbox-boot2docker-url=./boot2docker-1.8.iso \
--engine-opt="default-network=overlay:multihost" \
--engine-opt="kv-store=consul:$CONSUL_IP:8500" \
--engine-label="com.docker.network.driver.overlay.bind_interface=eth1" \
--engine-label="com.docker.network.driver.overlay.neighbor_ip=$(docker-machine ip ${_master})" \
${_hostid}
# create another swarm process
docker $(docker-machine config ${_hostid}) run -d \
--restart="always" \
--net="bridge" \
swarm:latest join --addr "$(docker-machine ip ${_hostid}):2376" "token://$SWARM_TOKEN"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment