Our CTO, Quentin Hocquet, was invited to speak at the Docker Distributed Systems Summit in Berlin this week. The summit was targeted at developers and included high quality talks about distributed systems and issues.
During his presentation, Quentin talked about how the Infinit storage platform is designed and showed our new tool
infinit-cluster which simplifies setting up common storage deployments. We're still working on the tool so it's not yet included in Infinit but expect to see it in a future release.
What follows is the demo that Quentin gave at the Docker Distributed Systems Summit. The demo creates three storage nodes (a.k.a servers) to store the blocks of data (with a default replication factor of three). We can then create a volume backed by this storage that can be accessed by other containers for example.
The first step is to initialize the Infinit cluster:
$> docker run --name node1 --rm \ infinit:0.7.0 \ infinit-cluster --init
Once this has been done, other nodes can join the cluster by connecting and authenticating to the first node. Those of you familiar with Docker Swarm will see that
infinit-cluster's syntax is very similar to Docker Swarm's.
$> docker run --name node2 \ --link node1 \ infinit:0.7.0 \ infinit-cluster --join node1
$> docker run --name node3 \ --link node1 --link node2 \ infinit:0.7.0 \ infinit-cluster --join node1
Once the Infinit cluster is running, we have a place to store our data. We can now launch a new container in which we will create a volume and mount it.
$> docker run --name client --privileged \ --link node1 --link node2 --link node3 \ infinit:0.7.0 \ bash $> infinit-volume --create docker-summit $> infinit-volume --run docker-summit --mountpoint /mnt/infinit &
Note that we need the
--privileged mode so that we can mount the Infinit volume that we created.
Files and folders can be created in the
/mnt/infinit/ mountpoint and they will persist beyond the life of the newly launched container. They will also be accessible by other containers.
We can access the volume we created from other containers using the Infinit Docker volume plugin. This is part of the Infinit daemon which is also containerized and can be started using the following command:
$> docker run --name plugin --privileged \ --volume /run:/run:shared \ --link node1 --link node2 --link node3 \ infinit:0.7.0 \ sh -c 'infinit-cluster --connect node1 && infinit-daemon --run'
Once the Infinit daemon is running, the
docker-summit volume is exposed as a Docker volume that you can use in any container.
$> docker run --name my-service \ --volume infinit/docker-summit:/mnt/infinit \ alpine \ touch /mnt/infinit/something
Quentin's slides from his presentation can be found here:
Check out the video here:
Get started with Infinit in less than 10 minutes! Test it!