Is it time to differentiate between application containers and system containers? Some companies think so. Here’s a look at why the difference matters—or not, depending on your preferences.
When people talk about containers in the era of Docker, they usually mean what would most properly be called an application container. That term refers to a container whose job is to run a single application inside an isolated environment.
Application containers are the primary use case for Docker, which is arguably the only container company that has made a big splash in the IT world writ large.
Docker’s focus on application containers is interesting, however, if you consider that originally, containerization technology was designed primarily as a way to containerize a complete operating system (OS) rather than just a single app. A container that runs a full OS is a system container.
Solaris containers, which Sun debuted in 2005, were intended mainly as a way to virtualize other Solaris systems on top of a Solaris host. Virtuozzo’s OpenVZ, whose history stretches back even further, was also designed as a container system platform.
Most recently, Canonical’s new LXD container platform, which appeared in 2016, has come on the scene to offer yet another system container option.
Should We Distinguish Between System and Application Containers?
Companies with system container platforms seem keen on emphasizing that the problem they solve is very different from the one Docker focuses on. That makes sense. It’s a way to stand out in a market in which Docker is crowding out everyone in the application-container space.
But the distinction starts to seem less important when you consider that Docker itself could be used for system containers. There’s nothing stopping you from running a complete OS inside a Docker container. Most people just choose not to do it.
It’s also worth noting that containers of all stripes remained a niche technology until Docker came along and showed how containers could revolutionize the delivery of applications. When the focus remained mostly on system containers during the 2000s, few people were using containers in production.
That was probably due to the fact that system container platforms provide the same type of functionality as hypervisors including VMware or KVM. It was hard for system containers to gain traction when they solved a problem that VMware solved just as well, in a better-advertised way.
Still, the fact remains that the public conversation about containers becomes confusing when participants do not distinguish between application and system containers. But if developers of the latter want to prevent Docker from completely stealing the show, they need to do more to demonstrate their value, and convince users that containers can come in handy for more than just application delivery.