docker-machine create -d virtualbox mh-keystore
eval "$(docker-machine env mh-keystore)"
docker run -d
-p "8500:8500"
-h "consul"
progrium/consul -server -bootstrap
docker-machine create
-d virtualbox
--swarm --swarm-master
--swarm-discovery="consul://$(docker-machine ip mh-keystore):8500"
--engine-opt="cluster-store=consul://$(docker-machine ip mh-keystore):8500"
--engine-opt="cluster-advertise=eth1:2376"
mhs-demo0
docker-machine create -d virtualbox
--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=eth1:2376"
mhs-demo1
docker-machine ls
If number of containers are not correct, make sure the consul server is running.
eval $(docker-machine env --swarm mhs-demo0)
### create overlay network. docker network create --driver overlay --subnet=10.0.9.0/24 my-net
docker network ls
### switch context back to swarm master eval $(docker-machine env --swarm mhs-demo0)
docker run -itd --name=web --net=my-net --env="constraint:node==mhs-demo0" nginx
eval $(docker-machine env --swarm mhs-demo1)
docker run -it --rm --net=my-net --env="constraint:node==mhs-demo1" busybox wget -O- http://web
This should display Welcome to nginx! HTML
External connectivity is provided by the
docker_gwbridge
network
eval $(docker-machine env mhs-demo1)
docker network ls
eval $(docker-machine env mhs-demo0)
docker network ls
The eth0 interface represents the container interface that is connected to the my-net overlay network. While the eth1 interface represents the container interface that is connected to the docker_gwbridge network.