Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jianchen2580/28f6b5ad77a1b3db8722139fb7f69055 to your computer and use it in GitHub Desktop.
Save jianchen2580/28f6b5ad77a1b3db8722139fb7f69055 to your computer and use it in GitHub Desktop.
# create consul node
docker-machine create -d virtualbox consul
# Run consul on consul node
eval $(docker-machine env consul)
docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
# Create master node, user eth1 here because eth0 is for NAT, eth1 for bridge
docker-machine create -d virtualbox \
--swarm --swarm-master \
--swarm-discovery="consul://$(docker-machine ip consul ):8500" \
--engine-opt="cluster-store=consul://$(docker-machine ip consul):8500" \
--engine-opt="cluster-advertise=eth1:2376" \
manager
# Create node1 & node2
docker-machine create -d virtualbox \
--swarm \
--swarm-discovery="consul://$(docker-machine ip consul ):8500" \
--engine-opt="cluster-store=consul://$(docker-machine ip consul):8500" \
--engine-opt="cluster-advertise=eth1:2376" \
node1
docker-machine create -d virtualbox \
--swarm \
--swarm-discovery="consul://$(docker-machine ip consul ):8500" \
--engine-opt="cluster-store=consul://$(docker-machine ip consul):8500" \
--engine-opt="cluster-advertise=eth1:2376" \
node2
# create node3 and join swarm cluster manually
docker-machine create -d virtualbox node3
docker run -d swarm join --advertise=$(docker-machine ip node3):2376 consul://$(docker-machine ip consul):8500
# show swarm cluster info
eval $(docker-machine env -swarm manager)
docker info
# run container on cluster, Swarm currently supports three strategy: spread, binpack, random
eval $(docker-machine env -swarm manager)
docker run -it --rm busybox
docker run -it --rm --env="constraint:node==node1" busybox
# create overlay(vxlang): https://en.wikipedia.org/wiki/Virtual_Extensible_LAN
docker network create --driver overlay --subnet=10.0.8.0/24 swarm-test
docker run -it --rm --net=swarm-test --env="constraint:node==node1" busybox
docker run -it --rm --net=swarm-test --env="constraint:node==node2" busybox
docker run -it --rm --net=swarm-test --env="constraint:node==node3" nginx
docker run -it --rm --net=swarm-test --env="constraint:node==node2" --name=bba busybox
# https://docs.docker.com/compose/swarm/#limitations
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment