Skip to content

Instantly share code, notes, and snippets.

@ochinchina
Last active September 1, 2015 01:40
Show Gist options
  • Save ochinchina/da3cc74622a747c7d0e2 to your computer and use it in GitHub Desktop.
Save ochinchina/da3cc74622a747c7d0e2 to your computer and use it in GitHub Desktop.
try the docker experimental multihost overlay network + swarm

assumption:

node 1: ip address is 192.168.56.101

node 2: ip address is 192.168.56.102

get the experimental docker binary

get the x86_64 bit version

$ wget https://experimental.docker.com/builds/Linux/x86_64/docker-latest
$ sudo ./docker-latest version
Client:
 Version:      1.9.0-dev
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   0e3674d
 Built:        Tue Aug 11 23:06:01 UTC 2015
 OS/Arch:      linux/amd64
 Experimental: true

get consul and start it for docker networking

on each node get consul:

$ wget https://dl.bintray.com/mitchellh/consul/0.5.2_linux_amd64.zip
$ unzip 0.5.2_linux_amd64.zip

on node 1:

$ ./consul agent -server -bootstrap -data-dir /tmp/consul -bind=192.168.56.101 -client=0.0.0.0

on node 2:

$ ./consul agent -data-dir /tmp/consul -bind=192.168.56.102 -client=0.0.0.0
$ ./consul join 192.168.56.101

start the docker on each node

on node 1:

$ sudo ./docker-latest daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --default-network=overlay:multicast --kv-store=consul:localhost:8500 --label=com.docker.network.driver.overlay.bind_interface=eth1

on node 2:

$ sudo ./docker-latest daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --default-network=overlay:multicast --kv-store=consul:localhost:8500 --label=com.docker.network.driver.overlay.bind_interface=eth1 --label=com.docker.network.driver.overlay.neighbor_ip=192.168.56.101

create network

on any node:

$ sudo ./docker-latest network create -d overlay test

publish service

on any node start a service:

$sudo ./docker-latest run --publish-service redis1.test -d redis

start swarm

node 1:

$ sudo ./docker-latest run swarm join --addr=192.168.56.101:2375 consul://192.168.56.101:8500/swarm

Note: the consul address should not use consul://localhost:8500/swarm and must use consul://192.168.56.101:8500/swarm

node 2:

$ sudo ./docker-latest run swarm join --addr=192.168.56.102:2375 consul://192.168.56.101:8500/swarm

start swarm manager

start the swarm manager on any node, for example start it on node1:

$sudo ./docker-latest run -p 2376:2375 swarm manage consul://192.168.56.101:8500/swarm

start container in cluster

on any node

$ sudo ./docker-latest -H tcp://0.0.0.0:2376 run -d --name=redis1 -m 2G redis

$ sudo ./docker-latest -H tcp://0.0.0.0:2376 run -d --name=redis2 -m 2G redis

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment