The abandonment of Docker in Kubernetes 1.20 has triggered a lot of discussions, and the topic of docker’s death has become hot again. We spoke to an engineer at OPPO about the incident from a technical point of view. He has been engaged in containerization since 2014 and is currently responsible for the arrangement and scheduling of OPPO cloud platform.

With the abandonment of Docker in Kubernetes 1.20, the topic of the demise of Docker and the rise of Kubernetes became hot again. I disagree with the discussion about the demise of Docker. Docker is far from dead. I think a more appropriate term would be the decline of Docker. In this article, I will talk about the decline of Docker and the rise of Kubernetes from my personal perspective.

Out of nowhere — the rise of Docker

My first contact with Docker was in 2014. At that time, the main load of OpenStack was KVM. We tried a lighter LXC and it failed. The small icon of docker container, combined with the concept of Docker Container, immediately attracts people’s attention. If you’ve experienced the pain of making LXC images, you’ll appreciate the value of Docker. Tedious LXC image production compared with streamlined Dockerfile, which is high and which is low, which is better is clear at a glance.

Docker has successfully combined relatively stable and mature technologies such as Cgroup, Union Filesystem and Namespace with the production process of Docker Image to achieve container-type standard delivery.

At this time, Docker quite has the momentum of “lifting the world’s hero and cannot compete with it”. Although there are still more or less problems in the production process, Docker has passed the stage of Proof of Concept (POC) and entered the ranks of pre-products. After in-depth customization of Docker, our team also successfully pushed the combination of OpenStack and Docker into production.

In those two years, knowing docker, mirroring, and understanding docker principles became a common topic of interview in the infrastructure field. While only a handful of companies have dared to get docker into production first, no one can ignore the rising star.

At that time, docker topics were active in various conferences and forums. Everyone was keen to discuss the potholes docker encountered in production. With a lot of tweaking and stumbling, Docker was finally put into production. At this time, even technically conservative companies with wait-and-see attitude will arrange some human resources to follow up the development of Docker and the practical experience of each company. At this time, Docker is really in the limelight.

Born giant — Kubernetes

In 2015, I turned to the research of Container as a Service (CaaS). At this time, everyone is talking about CaaS, but everyone says it differently. In fact, everyone is feeling the stones. During this period, I came into contact with Swarm and Kubernetes through my research on magnum of OpenStack.

Docker swarm is a cluster management solution promoted by Docker. The trio of Docker, Swarm, and Compose completely covers runtime, cluster management, and orchestration, creating a seemingly impenetrable ecosystem. In particular, the unique API of swarm and Docker were pulled together, and the complexity of cluster management and the complexity of single node management were shielded to users, but there was a kind of pleasure like holding hands. This design still strikes me as really ingenious.

And the fledgling Kubernetes are also on the offensive. Swarm + Compose: Swarm + Compose: Swarm + Compose: Swarm + Compose: Swarm + Compose: Swarm + Compose: Swarm + Compose With the release of Kubernetes 1.0, Kubernetes moved from behind the scenes to the front, accepting PR submissions from around the world on a large scale and rapidly improving functionality, performance and stability.

To Kubernetes version 1.2, after our internal evaluation, has been production grade quality. The declarative API, concise architecture, flexible labels and other excellent design, we have no reason to reject the selection. Then, after months of intense development, the kubernetes + Docker combination was brought to the stage and eroded OpenStack + Docker’s share at a rapid rate.

Docker at this point has been limited to container runtime and image-making tools. Tied docker hands and feet, Kubernetes has no opponent to arm, kubernetes is no longer barrier-free on the road to dominance.

Twilight of Beauty — The Decline of Docker

Up to now, the decline of Docker has become an indisputable fact, and the reasons for this result, I think, are various.

Part of it is docker’s own insularity and stubbornness. I remember participating in several PR discussions in the community at that time. The extra long cycle of a new feature has already worn out the patience of most people. The docker community’s slightly conservative approach on multiple points of view has made people gradually lose their enthusiasm for participation.

On the other hand, and more importantly, the threshold of container technology itself has been broken, and it has not been able to form a technical moat. The container technology war has turned into a standards war, and the side that has more say in standards is undoubtedly the side with more users, a larger community, and a stronger platform. In just two or three years, the balance has rapidly shifted towards Kubernetes, whose leading CRI, CNI and CSI standards have become the de facto standard. In contrast, CNM and other standards that Docker is pushing hard seem to be high and low.

Kubernetes, meanwhile, did not give up the initiative. Kubernetes’ strength and support for other container runtimes accelerated docker’s decline. In version 1.6, when docker Manager was abandoned and docker manager was directly connected to Docker, and the combination of CRI + Dockershim was destined, Kubernetes would go to the complete decoupling of Docker, which is today’s step.

In addition, other container runs are beginning to carve up market share. If gVisor and Kata are only trying to challenge Docker’s dominance in some scenarios, Red Hat Podman has sounded the trumpet for an all-out assault. Combined with some financing and acquisition rumors of Docker in the past two years, it adds a kind of sadness of the end of heroes and the end of beauties.

review

How many hero play in the world, each to the end of the total sorrow.

Looking back six years, docker was a revolutionary product both at that time and now. The decline of Docker doesn’t mean that container runtime isn’t important, but that it’s becoming more commonplace.

Today, the container runtime is a largely solved problem, a relatively mature module that has become part of the entire infrastructure. As for the upper platform and beyond, there will be less and less attention paid to this, just as most users don’t care about the kernel anymore.

Even in the future, I predict that the runtime will likely become a kernel-level add-on module that will be pre-installed on many distributions and will gradually become more transparent to most users (red Hat is already moving in that direction). More and more users will pay more attention to the upper level of delivery, management, choreography.

As for whether Kubernetes will decline, I think not in the short to medium term (five years). Kubernetes has become a platform-level project. In this regard, Kubernetes as a platform will have more vitality than docker as a tool.