12 open source tools that make Docker better

From bringing GUIs to Docker tools to using Docker to streamline development and testing, these 12 projects help float Docker’s boat.

red buoys floating in the ocean unique life preservers safety risk float
Just_Human / Getty Images

Blink and you might miss some of the most interesting developments around Docker these days. Kubernetes may be getting more of the hot-new-tool thunder, but Docker continues to offer “just enough” container orchestration for most development projects and deployments.

Plus Docker has its own rich ecosystem of third-party tools that extend Docker, jazz it up, or make it less persnickety. Here are 12 open-source creations that get a boost from Docker or give Docker a boost, leveraging Docker for specific use cases or making Docker easier to work with.


Docker images are like sandwiches, with many layers. Maybe it is better to say they’re like sandwiches in opaque wrappers: You don’t always know how many layers there are, or what’s in them. Dive lets you visually explore the layers in a Docker image through an interactive UI. You can see what ingredients are present in each layer, and also determine how each layer has changed the layer below it (what has been added or removed). You can also analyze an image for wasted or duplicated space, and even pass the results along to your continuous integration pipeline, so that an image with too much wasted space fails the build process.

Docker Compose UI

Docker Compose UI is an MIT-licensed project that provides Docker Compose with a web-based UI, which is built using Python’s Flask framework. Containers can be run locally or on a remote host, and Docker Compose UI itself is available in a Docker container for convenience. Note that some of the demo projects provided with Docker Compose UI can’t scale “because of published ports conflicts.”


Most Docker work is performed through a CLI or terminal interface, and the default Docker CLI looks much the same as any other CLI program. Dockly provides a full-screen terminal interface for Docker—a text-mode dashboard of all running containers, a live view of container logs and utilization statistics, and a built-in shell tab. 


A Docker-powered, MIT-licensed development environment, Dusty is intended to improve on the use of Docker Compose or Vagrant for managing containers. The developers behind Dusty claim, for example, that Dusty has a simpler specs model than Docker Compose, and that it handles version-based isolation of app dependencies and updates of services better than Vagrant. Dusty also allows tests to be created as part of a spec for an environment, and makes it possible for common multi-step procedures to be made into an easily invoked script.


Elsy is described as “an opinionated, multi-language, build-tool,” using Docker and Docker Compose. Elsy allows a software repository to be built consistently across environments, and keeps the tooling needed to perform the build to a minimum, no matter what language is in use. One touted feature, blackbox-test, allows any built container to be tested in a way that reflects its actual production use. For example, any service that needs a database will have a database container set up for it, and Elsy will automatically tear down the test environment afterwards.


Here’s one for fans of the Go language. Gockerize is a BSD-licensed tool for building static Go binaries and packaging them into minimal Go containers. Created by the folks behind AeroFS, Gockerize includes features like “the ability to automatically apply a set of patches to the Golang standard library; something which, while very rarely needed, can be a life-saver,” according to the blog post introducing the project. Gockerize doesn’t rely on much externally—only Go, Docker 1.5 or higher, and the Bash shell.


Another Docker-based build tool, Habitus uses a Dockerfile and a build.yml file to create multi-step container builds that contain any number of arbitrary commands. Each step in the build can be made to rely on some previous step, to ensure that any tricky multi-step dependencies work correctly. Habitus also supports including secrets in a build process, and does so without leaving traces in the image.


Billed as a “hypervisor-agnostic tool that allows you to run Docker images on any hypervisor,” Hyper uses Docker, QEMU, and Xen to accomplish its goals. The tool’s creators claim that Hyper uses minimal resources (28MB), boots at the speed of a container rather than a VM, delivers high performance, and provides hardware-enforced isolation for applications. One proposed use case for Hyper is to create multi-tenant, Docker-based applications.


Sometimes you just want a GUI. Kitematic gives you a GUI for managing Docker containers on MacOS, Ubuntu Linux, and Windows. Additional Kitematic conveniences include automatically exposing container volume data through the file system, providing a built-in CLI to Docker, and automatically synchronizing its state to match changes to Docker (e.g., when you add new container images).


The Unix world has a long tradition of combining small programs to solve big problems. Logspout applies the same philosophy to managing logs from Docker containers. Logspout pipes all logs (stdout and stderr, mainly) from all containers on a given host to whichever target you deem best. The resulting aggregated logs can be viewed in real time simply by reading an HTTP stream.


Even a relatively simple Docker stack can have many moving parts: containers, images, networks, volumes, secrets. Keeping track of all that in your head is no solution. Portainer provides a web UI for Docker environments, whether they’re single hosts or clusters, providing a single-pane-of-glass view of everything you’re running. Management and overview for all common Docker components are no more than a couple of clicks away. Best of all, the whole thing is deployed in your existing Docker infrastructure as a single container.


MacOS users ought to be familiar with Homebrew, the ad hoc package management system for MacOS. Whalebrew lets you install Docker images and run them directly from the command line by way of an alias, as if they were locally installed executables. Installing packages is as easy as typing whalebrew install <package_name>. Packages curated through Whalebrew’s repository work best, but theoretically any Docker image that takes CLI commands should work.

Copyright © 2019 IDG Communications, Inc.

InfoWorld Technology of the Year Awards 2023. Now open for entries!