manage a mesh of docker and etcd hosts

Usage no npm install needed!

<script type="module">
  import smesh from '';



manage a mesh of etcd hosts



First - ensure your hostname is set correctly.

Then install docker.

$ wget -qO- | sudo bash

if you are using vagrant - run this command to allow the vagrant user access to the docker socket:

$ sudo usermod -aG docker vagrant

You will then need to restart your command line session.

Then pull the required images:

$ docker pull binocarlos/smesh
$ docker pull coreos/etcd


To make a smesh cluster you first need an etcd token:

node1:~$ export SMESH_TOKEN=$(docker run --rm binocarlos/smesh token)

Then set the SMESH_IP variable to the IP address of an interface accesible by other members of the cluster:

node1:~$ export SMESH_IP=

Then we can use these values to boot an etcd server

node1:~$ $(docker run --rm binocarlos/smesh start --token $SMESH_TOKEN --hostname $HOSTNAME --address $SMESH_IP)

And then on the other servers:

node2:~$ SMESH_TOKEN=
node2:~$ SMESH_IP=
node2:~$ $(docker run --rm binocarlos/smesh start --token $SMESH_TOKEN --hostname $HOSTNAME --address $SMESH_IP)

Now there is a cluster of 3 etcd servers running - you can run etcdctl on one of the servers:

node1:-$ docker run --rm binocarlos/etcdctl --peers set /apples hello
node1:-$ docker run --rm binocarlos/etcdctl --peers ls / --recursive

to stop the smesh container:

node1:~$ docker stop smesh && docker rm smesh

manual peers

You can use the --peers option rather than --token if you want to manually co-ordinate the cluster:

node1:~$ $(docker run --rm binocarlos/smesh start --hostname $HOSTNAME --address --peers boot)
node2:~$ $(docker run --rm binocarlos/smesh start --hostname $HOSTNAME --address --peers,
node3:~$ $(docker run --rm binocarlos/smesh start --hostname $HOSTNAME --address --peers,