By now, you almost certainly know about Docker. But what about all the other container platforms? From Rkt to LXC to LXD to OpenVZ, the list is long.
If you’re struggling to keep all of these container platforms straight, this post is for you. Keep reading for an overview of each of the container options out there today, and an explanation of what makes each one different.
Docker
Docker probably needs no introduction at this point. Three years on, it’s the open source application container platform that made containers a big deal.
For the purposes of explaining how Docker compares to other container platforms, however, it’s worth noting that Docker has the following characteristics:
- It runs on Linux. (Well, you can run it on Windows and OS X now, too, but via a Linux virtual machine.)
- Again, it’s an application container platform. While you could theoretically use a Docker container to host an entire operating system, that is not what it is designed for.
Rkt
Rkt, which is short for Rocket, is the Docker competitor you may not have heard of. Rkt is the container runtime from CoreOS.
Like Docker, Rkt is designed for application containers. And like Docker, it runs on Linux.
So far, Rkt remains dwarfed by Docker in the marketplace. But its existence, and CoreOS’s persistence in developing Rkt, is a reminder that Docker is certainly not the only game in town when it comes to application containers.
LXC
LXC, short for Linux Containers, is the container runtime and toolset that helped make Docker possible. LXC predates Docker by several years, and Docker was originally based on LXC (it’s not anymore), but LXC gained little traction.
LXC is Linux-only. In fact, it depends heavily on the Linux kernel.
LXC has not really matured into a production-ready container technology in its own right. It’s only by pairing LXC with other tools—namely LXD, which is described below—that LXC is usable for real-world purposes today.
LXD
LXD is a container platform based on LXC. Essentially, LXD provides an API for controlling the LXC library, as well as easy integration into OpenStack.
Canonical, the company that develops Ubuntu Linux, is the primary backer of LXD development right now.
The first stable release of LXD appeared last April. (Confusingly, it was numbered LXD 2.0, but that was just to keep it at pace with LXC releases; there never was an LXD 1.0.)
Unlike Docker and Rkt, LXD is a system container. It is designed to host a complete operating system inside a container. That makes it an alternative to VMware or KVM more than a competitor to Docker.
In fact, Canonical is keen to emphasize that you can use an LXD container to run an OS, on top of which you run Docker containers. That seems to be one of the primary use cases the company sees for LXD.
OpenVZ
Rounding out the list is OpenVZ. This is another system container platform, meaning it’s also designed to host a complete OS inside a container. Development is currently overseen by Virtuozzo.
OpenVZ is actually older than almost all of the other container platforms in existence today. But it arguably has received less traction than the likes of Docker, at least outside of the open source community.