The Missing Introduction to Containerization
The Open Container Initiative: What is a Standard Container?
We already mentioned that Docker initially relied on LXC as its container runtime, then switched to its own library called libcontainer. In 2015, this library evolved into runC and is used today by many container runtimes such as containerd and CRI-O.
It's also worth noting that runC is more about standardization than just being a Docker runtime, as it implements the Open Container Initiative (OCI) runtime specification.
runC is basically a little command-line tool to leverage what was called libcontainer directly, without going through the Docker Engine.
The goal behind runC is to make standard containers available everywhere. This project was donated to the OCI, and the libcontainer repository has been archived.
In reality, libcontainer was not completely abandoned, but it was refactored and renamed to runC.
runC repository
The main difference between libcontainer and runC is that libcontainer is a Go library, while runC is a CLI tool. The latter wraps the former and provides a CLI interface to it. The CLI was built while taking into consideration the OCI specifications.
So what is the OCI?
Painless Docker - 2nd Edition
A Comprehensive Guide to Mastering Docker and its EcosystemEnroll now to unlock all content and receive all future updates for free.
Hurry! This limited time offer ends in:
To redeem this offer, copy the coupon code below and apply it at checkout:

