Looking back at 2015, there have been many projects created by the Docker community that have advanced the developer experience. Although choosing among all the great contributions is hard, here are 10 "cool tools" that you should be using if you are looking for ways to expand your knowledge and use of Docker.
1. Container Migration Tool (CMT)
A winning entry at the Docker Global Hack Day #3, the Container Migration team drew inspiration from a DockerCon talk in which Michael Crosby (@crosbymichael) and Arnaud Porterie (@icecrime) migrated a Quake 3 container around the world, demonstrating container migration while maintaining a TCP connection. The CMT project created an external command-line tool that can be either used with Docker or runC to help "live migrate" containers between different hosts by performing pre-migration validations and allowing it to auto-discover suitable target hosts.
We had to add in a fun one! Lots of Docker users run custom Minecraft servers in containers. But Dockercraft is a Minecraft client to visualize and manage Docker containers. With the flick of a switch, a container turns on or off. And with the press of a button, you can destroy one. Dockercraft is a fun project—that is surprisingly addictive—from Docker engineers Adrien Duermael and Gaetan de Villele.
3. Docker Label Inspector
The Docker Label Inspector tool helps ensure that developers are providing Docker images with the metadata containers required when distributed across the Internet. Specifically, this tool enables developers to use Docker labels to create metadata within the domain of container technology, to check labels against official label schema and to validate against provided JSON schema.
Dvol enables version control for your development databases in Docker. Dvol lets you commit, reset, and branch the containerized databases running on your laptop, so you can easily save a particular state and come back to it later. Dvol can also integrate with Docker Compose to spin up reproducible microservices environments on your laptop.
5. IPVS Daemon GORB
Presented at DockerCon EU, IP Virtual Server (IPVS) for Docker containers enables production-level load balancing and request routing using open source IPVS, which has been part of the Linux kernel for more than a decade. It supports TCP, SCTP, and UDP and can achieve fast speeds, often within five percent of direct connection speeds. Other features include NAT, tunneling, and direct routing. To make IPVS easier to use, the Go Routing and Balancing (GORB) daemon was created as a REST API inside a Docker container to provide IPVS routing for Docker.
Libnetwork combines networking code from both libcontainer and Docker Engine to create a multi-platform library for networking containers. The goal of libnetwork is to deliver a robust Container Network Model that provides a consistent programming interface and the required network abstractions for applications. There are many networking solutions available to suit a broad range of use-cases. libnetwork uses a driver/plugin model to support all of these solutions, while abstracting the complexity of the driver implementations by exposing a simple and consistent Network Model to users.
7. The Raspberry Pi Challenge
In the DockerCon closing keynote, Dieter Reuter from Hypriot presented a demo running 500 Docker containers on a Raspberry Pi 2 device. Convinced that this number of containers could be at least doubled, Dieter then challenged the Docker community to beat his personal record. As part of his project, Dieter Reuter demonstrated how to get started with Docker on Raspberry Pi and how to scale the number number of web servers running in containers that could reside on a single Raspberry Pi 2. The current record is more than 2,500 web servers running in containers on a single Raspberry Pi 2.
8. Scaling Spark with Zoe analytics
This open source user-facing tool ties together Spark, a data-intensive framework for big data computation, and Docker Swarm. Zoe can execute long-running Spark jobs, but also Scala or iPython interactive notebooks and streaming applications, covering the full Spark development cycle. When a computation is finished, resources are automatically freed and available for other uses, because all processes are run in Docker containers. This tooling can enable application scheduling on top of Swarm and optimized container placement.
9. Unikernel demo source code
First unveiled as a cool hack at DockerCon EU (Unikernels, meet Docker!), this demo showed how unikernels can be treated as any other container. In this demo, Docker was used to build a unikernel microservice and then followed up by deploying a real web application with database, webserver, and PHP code, all running as distinct unikernel microservices built using Rump Kernels. Docker managed the unikernels just like Linux containers, but without needing to deploy a traditional operating system. Apart from the MySQL, NGINX, and PHP with Nibbleblog unikernels shown in the demo, this repository also contains some examples of how to get started.
10. Wagl, DNS service discovery for Swarm
Wagl is a DNS server that allows microservices running as containers on a distributed Docker Swarm cluster to find and talk to each other. Wagl is minimalist and works as a drop-in container in your cluster to provide DNS-based service discovery and simple load balancing by rotating a list of IP addresses in DNS records.