Though Docker still made up 83 percent of containers in 2018, that number is down from 99 percent in 2017. Other container runtime environments including CoreOS rkt, Mesos, lxc and others are steadily growing as the market continues to evolve and diversify.
Docker surely gets a lot of attention. But Docker is not the only container option out there. In this article, we’ll delve into some alternative container runtimes, discovering their differentiating factors, unique benefits and possible drawbacks.
“It appears from the data that customers have a greater comfort level with using “non-Docker” solutions in production” – 2018 Sysdig Report
In 2018, 12 percent of production containers were rkt (pronounced “Rocket”). Rkt supports two types of images:
appc. A selling point of rkt is its pod-based process that works out of the box with Kubernetes (also referred to as “rktnetes”). In Kubernetes, an rkt container runtime can easily be specified:
$ kubelet --container-runtime=rkt
Some unique rkt features include support for Trusted Platform Modules (TPM). It’s optimized for application containers, however, compaed with Docker, developers may find fewer third-party integrations. In general, the compatibility of rkt makes it ideal for public cloud portability and rapid deployment.
Some potential drawbacks include a lack of OCI compliance. Rkt is no longer developing appc and plans to embrace OCI, yet it is not yet supported. Also, Rklet (CRI) is still under development. Red Hat recently acquired CoreOS, the company behind rkt.
In 2018, 4 percent of production containers were Mesos. Developed by Apache, Mesos offers quality performance, supporting both
appc image types. OCI support is likely coming, with indications they will follow Docker’s adoption trajectory.
Speaking on Mesos use cases, infrastructure and DevOps consultant Ricardo Aravena notes, “The best use for Mesos is with Spark and Flink — frameworks for big data applications.” While other use cases are possible, Aravena believes these containers are particularly suited for such environments.
A potential downside is that you can’t run these containers standalone; in other words, you require the Mesos framework to make them run.
Next up, 1 percent of containers were LXC Linux Containers in 2018. Nicknamed “chroot on steroids,” LXC dates back before Docker picked up steam. Thus, LXC has a pretty active community around it.
Its three main components include
lxc, the runtime,
lxd, a daemon written in Go that manages containers and images, and then
lxfuse, which manages the file system. Whereas LXC is an older, well-known low level set of tools, LXD expands on it, offering a new UI and CLI for container management.
According to Aquasec, lxd “emulates the experience of operating Virtual Machines but in terms of containers,” and without the severe overhead of VMs. Both Windows or MacOS clients can configure the
lxd daemon for access.
Some disadvantages include a lack of Kubernetes integration. Also, lxc is not yet OCI compliant, however,
lxcrun will likely resolve that.
First released in 2005 as an extension of the Linux kernel, OpenVZ is an open source container-based virtualization that can run multiple virtual environments and virtual private servers on a single Linux operating system. Since hosts share a single kernel, OpenVZ supplies a lower memory footprint compared to other container runtimes.
With OpenVZ’s focus on containers for whole operating systems, a disadvantage is that it is not ideal for single applications. There is no CRI or Kubernetes integration yet. Word is that OpenVZ 7, the latest version, is not yet as stable as its predecessor, OpenVZ 6.
containerd is described as “an industry-standard container runtime with an emphasis on simplicity, robustness and portability.” An incubating project of the Cloud Native Computing Foundation, containerd is available as a daemon for Linux or Windows.
Containerd supports OCI images, is designed to work in concert with gRPC and comes with many container lifecycle management features. View the docs here for more information.
Other Container Runtimes
- Windows Server Containers.
- Linux VServer.
- Hyper-V Containers.
- Java containers.
Evaluate Options And Contain Your Excitement
Docker is certainly a popular runtime for today’s containers and is probably not going anywhere for some time. With that said, its superiority may be dwindling as other containerization methods are refined for specific environments. If the use of non-Docker containers surges, it could have a ripple effect on the tooling industry built around Docker platform.
“Key assessment: Docker still reigns, but we’re seeing what might be the first signs of cracks in the dam.” – 2018 Sysdig Report
Since the Open Container Initiative (OCI) has emerged into the field, we will likely see this body lead standardization and evolution of container technology. In choosing the right container tool, engineers should consider OCI compliance, along with portability, community activity and adoption numbers as indicators for robustness and future stability.