Docker is far and away the biggest name in containers today. But the container ecosystem involves much more than Docker. Here’s a look at the container scene writ large, which extends well beyond Docker.
To be sure, Docker is the company (and the open-source project) that put containers on the mainstream map. But if you want to understand where container technology is headed, and what its long-term impact on infrastructure will be, you have to appreciate that software container technology is much older and broader than Docker containers.
One way of breaking down the complexity of the container ecosystem is to organize it according to different types of containers and container-related technologies. In this respect, there are three big categories: application containers, system containers and mini-containers, or unikernels. Here’s a summary of each of these categories.
Docker is primarily an application container platform. It is designed to run individual applications inside a portable, software-defined environment. Docker does this increasingly well, especially as better container storage and networking solutions emerge from Docker partners.
But it’s worth noting that Docker is not the oldest or the only application container solution. Rkt from CoreOS is another application container solution. It can run Docker containers, too, but it is based on a different format.
And then there’s Linux Containers, or LXC, the application container framework that is a part of the Linux kernel. LXC helped inspire Docker, and was once the basis for it.
System containers allow users to run an entire operating system inside a container. That orients them toward a different set of uses cases than application containers.
The most obvious use case for a system container is replacing a workload that otherwise would be assigned to a traditional virtual machine platform, such as VMware. In this context, system containers offer the advantage of lower overhead. As a result, they can support more containerized guests on a single host than traditional virtual machines could support. This is the selling point that the backers of container platforms such as OpenVZ from Virtuozzo and LXD from Canonical are plugging as they seek to take on traditional virtual machine platforms.
But system containers can be useful for other tasks, too. One example is providing backwards compatibility by virtualizing legacy OS functions. That was one of the main purposes of Solaris Zones, a type of system container platform Sun Microsystems (now Oracle) unveiled for Solaris in 2004.
Mini-containers, by which I mean container formats designed to host a minimalist software environment tailored to a very specific type of deployment, also should be on the radar of anyone who wants to understand where container technology is headed.
This category includes platforms such as Unikernels, which Docker acquired in January 2016. But there are several other types of related initiatives out there, which Container Journal detailed recently in a post titled, “Five Cool Unikernels Projects.”
For now, mini-container technologies remain in development. It’s not yet clear when or how they will be used for production purposes. Yet, it’s a safe bet that they’ll prove important as a building block for infrastructures, such as the kind that will power internet of things (IoT) devices. On the IoT, portable, minimalist containers could be just the thing needed to power large networks of tiny devices with extremely minimal storage and compute resources.