Dockerless: Container Standards Landscape

Our Dockerless journey is almost over. But before we wrap up, we should talk about some of the more advanced developments in this area.
Docker made containers popular and easy to use. OCI standards made them standardized and opened up more possibilities for new tools and integrations between those tools. But OCI covers only the basics: it does not go beyond running a single container. While running a single container or may be a small set of them is enough for development work or simple deployments, it’s not enough for large scale deployments.
There are more things involved - like, for example, orchestration, scheduling, networking and storage. And all of those things would benefit from a set of standards and interfaces too. We already saw one in action - Kubernetes CRI allows to swap the container manager for a whole cluster, and you can implement your own container manager for Kubernetes, without re-writing Kubernetes. But there are more of those.
For example, there is Container Network Interface - which consists of both set of specifications and tools focused on container network connectivity. Most of the popular container orchestrators and network plugins support or implement CNI - it is the standard way to plug network capabilities to the container runtime.
Another example is Container Storage Interface, which tries to standardize the link between various storage providers and container orchestration platforms, most importantly Kubernetes - this is still pretty new, but there are already many implementations and drivers for CSI, that allow Kubernetes to be free from specifics of each storage provider.
What’s also interesting, is that there are tools that are technically not containers but still fit these standards. For example, there are Kata Containers, which are, in fact, lightweight virtual machines that natively plug into container ecosystem - which means, that you can run virtual machines instead of containers inside your Kubernetes cluster. And that's not the only project that brings virtual machines to the container standards landscape.
In theory, a complete set of standards for packaging, running, interconnecting and providing storage to containers and as just mentioned, to virtual machines, can lead us to a more standardized and open way to build infrastructure and run applications than we ever had before.
Conclusion
We’ve started this course with a simple goal: to try to look at containers without looking at them through the Docker-lense. What we’ve discovered is the following:
A set of mature open standards, that define how we can package and run containers. Those standards do not depend on any particular technology and instead allow many technologies to be developed and work with one another.
A set of various container tools, that achieve same or a subset of features that Docker has. Some of those tools, like Podman, can already completely replace Docker for your development workflow. Some other tools are so small and focused, that you will be able to build much more secure, faster and leaner automations around them.
The Dockerless world is real and now you know what stands behind it. I hope this course helped you to understand and learn containers a bit better.
Article Series "The Dockerless Course"
- What’s Wrong With Docker? Introduction to the Dockerless Course
- What Is a Container? Open Container Initiative Explained
- Where Container Images Are Stored: Introduction to Skopeo
- The Standards Behind the Modern Container Images
- Container Bundle Deep Dive
- runc, crun & Container Standards Wrap Up
- Buildah: A Complete Overview
- Container Managers and ContainerD
- Podman: A Complete Overview
- CRI and Cri-O
- Dockerless: Container Standards Landscape