Kubernetes is deprecating Docker: what you need to know (2024)

Kubernetes is Deprecating Docker?!

For some time now, it seems that when people think of containers, they think of Docker and Kubernetes. Docker has been the big name when it comes to building and running containers, and Kubernetes has been the big name when it comes to managing and orchestrating them. It might seem a bit shocking to hear that Kubernetes is deprecating support for Docker as a container runtime starting with Kubernetes version 1.20.

Kubernetes is deprecating Docker: what you need to know (1)

Accelerate your career in cloud

A Cloud Guru makes it easy (and awesome) to level up your cloud career — even if you're totally new to tech. Check outACG’s current free coursesorget started nowwith a free trial.

So, I want to take this opportunity to talk about what this change really means, and what Kubernetes users will need to do about it.

What’s Changing with Docker?

Kubernetes deprecating Docker is actually not as big of a deal as it sounds, so let’s talk about what is really going on here.

Kubernetes is removing support for Docker as a container runtime. Kubernetes does not actually handle the process of running containers on a machine. Instead, it relies on another piece of software called a container runtime.

The container runtime runs containers on a host, and Kubernetes tells the container runtime on each host what to do. You can actually choose from a variety of options when it comes to what software you want to use as your container runtime when running Kubernetes. Up to now, a fairly popular option was to use Docker as the container runtime.

However, this will no longer be an option in the future. You will still be able to use Docker in other ways that are relevant to Kubernetes (more on that in a moment), but you will not be able to use Docker as the container runtime underneath Kubernetes.

Why is Kubernetes Deprecating Docker?

Kubernetes has supported using Docker a container runtime up to this point, so why are they choosing to stop supporting it?

Kubernetes works with all container runtimes that implement a standard known as the Container Runtime Interface (CRI). This is essentially a standard way of communicating between Kubernetes and the container runtime, and any runtime that supports this standard automatically works with Kubernetes.

Docker does not implement the Container Runtime Interface (CRI). In the past, there weren’t as many good options for container runtimes, and Kubernetes implemented the Docker shim, an additional layer to serve as an interface between Kubernetes and Docker. Now, however, there are plenty of runtimes available that implement the CRI, and it no longer makes sense for Kubernetes to maintain special support for Docker.

Kubernetes is deprecating Docker: what you need to know (2)

Watch: Kubernetes + Azure, the HashiCorp way
Have you ever thought about creating a standardized way to deploy your applications securely? Using the HashiCorp stack on Azure is an excellent place to start. Check out this free, on-demand webinar to learn more!

Watch Now

To really understand why it makes sense for Kubernetes to deprecate Docker, we need to go a little deeper.

I’ll let you in on a secret: Docker is not actually a container runtime! It’s actually a collection of tools that sits on top of a container runtime called containerd.

That’s right! Docker does not run containers directly. It simply creates a more human-accessible and feature-rich interface on top of a separate, underlying container runtime. When it is used as a container runtime for Kubernetes, Docker is just a middle-man between Kubernetes and containerd.

However, Kubernetes can use containerd directly as a container runtime, meaning Docker is no longer needed in this middle-man role. Docker still has a lot to offer, even in a Kubernetes ecosystem. It’s just not needed specifically as a container runtime.

What’s the Role of Docker Going Forward?

Although Docker is not needed as a container runtime in Kubernetes, it still has a role to play in the Kubernetes ecosystem, and in your workflow.

Docker is still going strong as a tool for developing and building container images, as well as running them locally. Kubernetes can still run containers built using Docker’s Open Container Initiative (OCI) image format, meaning you can still use Dockerfiles and build your container images using Docker.

Kubernetes will also continue to be able to pull from Docker registries (such as Docker hub). This means that Docker will remain a powerful contender when it comes to managing the images once they are built.

All in all, Docker will continue to be a useful tool on your development workflows and continuous integration (CI) systems, even if you don’t need it to run your containers underneath Kubernetes in production.

Looking to get certified on K8s? Read our blueprint for the Kubernetes certification journey.

Containerd and CRI-O: Docker Alternatives

If you are currently using Docker as a container runtime in your Kubernetes environment, you will need to make some changes. Moving forward, you can simply eliminate Docker as a middle-man in your Kubernetes environment. Instead, use another container runtime, such as containerd or CRI-O.

Before upgrading to a Kubernetes version removes support for Docker (which is currently estimated to release in late 2021), you will need to modify (or replace) existing Kubernetes nodes so that they use a supported container runtime other than Docker. Starting now, you may want to start building any new nodes so that they use a non-Docker container runtime as well.

Other than that, nothing is really changing. You can continue to use Docker to build your images, as well as to run containers locally for development purposes, or in your continuous integration (CI) stack. You can also continue to use Docker registries to store and manage your images.

If you are interested in learning how to use containerd alongside Kubernetes, check out my new course, Introduction to Kubernetes. It includes lessons that will walk you through the process of installing containerd and using it in your Kubernetes cluster.

Master the most in-demand Kubernetes skills

A Cloud Guru makes it easy (and awesome) to level up your cloud career — whether you’re new to cloud or a seasoned pro. Check out ACG’s free courses or get started now with a free trial.

Want more container goodness? Check these out:

  • Who has the serverless advantage?
  • Deploy a Container with Azure Container Instances
  • Packaging AWS Lambda functions as container images
  • New features on A Cloud Guru
  • Contain yourself: Keeping up with Kubernetes
Kubernetes is deprecating Docker: what you need to know (2024)

FAQs

Kubernetes is deprecating Docker: what you need to know? ›

If you are currently using Docker as a container runtime in your Kubernetes environment, you will need to make some changes. Moving forward, you can simply eliminate Docker as a middle-man in your Kubernetes environment. Instead, use another container runtime, such as containerd or CRI-O.

What is the basic knowledge of Docker and Kubernetes? ›

Docker is a containerization platform and runtime and Kubernetes is a platform for running and managing containers from many container runtimes. Kubernetes supports numerous container runtimes, including Docker.

Do I need to know Docker to learn Kubernetes? ›

The functionalities of Kubernetes revolve around containers. Docker technology is used to create containers that will be used in Kubernetes. Considering that fact, if you wish to use Kubernetes and Docker, you need to learn Docker before you can begin working with Kubernetes.

Why we use Kubernetes instead of Docker? ›

Docker Vs Kubernetes: Networking and Service Discovery

Docker provides basic networking capabilities, allowing containers to communicate with each other and the host system. However, Kubernetes offers a more advanced networking model, providing service discovery, load balancing, and network policies out of the box.

How does Kubernetes work without Docker? ›

Can Kubernetes Run Without Docker? The answer is both yes and no. Kubernetes, in itself, is not a complete solution. It depends on a container runtime to orchestrate; you can't manage containers without having containers in the first place.

What is the key difference between Docker and Kubernetes? ›

What is the difference between Kubernetes and Docker? Docker is a suite of software development tools for creating, sharing and running individual containers; Kubernetes is a system for operating containerized applications at scale.

How Kubernetes works with Docker? ›

Now, we have made it amply clear that Docker helps you in creating the containers while Kubernetes facilitates their management at run time. While Docker packages and ships the application, Kubernetes helps you to deploy and scale the application. So, it can be inferred that both go together.

How difficult is it to learn Docker and Kubernetes? ›

Difficulty in learning about containers and Docker is around 5-6/10. If you're a beginner, you can Enroll in our FREEDocker Training Course for the absolute beginner to learn containerization with simple and easy hands-on labs.

What do I need to know before Docker? ›

What do I need to know before learning Docker? A basic understanding of windows and computer science knowledge will suffice. Also, programming knowledge will add great help.

Which should I learn first Docker or Kubernetes? ›

Docker vs Kubernetes: Which One to Learn First

If your goal is to keep multiple containerized apps up and running, Kubernetes is a great platform to take advantage of. If you are a developer, you most likely need to learn how to work with Docker first. The need for Kubernetes usually comes later.

What can I use instead of Docker in Kubernetes? ›

Alternatives to Docker and Kubernetes
  • Apache Mesos.
  • Containerd.
  • CoreOS rkt.
  • HashiCorp Vagrant.
  • Hyper-V Containers.
  • LXC Linux Containers.
  • OpenVZ.
  • RunC.
May 10, 2023

Is Kubernetes hard to learn? ›

Kubernetes is notorious for having a steep learning curve and on-ramp. Still, Kubernetes has become significantly simpler in recent years. The core Kubernetes project itself is easier to install and maintain, while major cloud platforms and their managed services take much of the effort out of using Kubernetes.

Why do we need Docker? ›

Docker provides the ability to package and run an application in a loosely isolated environment called a container. The isolation and security lets you run many containers simultaneously on a given host.

How Kubernetes works in simple terms? ›

Kubernetes, initially developed by Google engineers, is an open-source platform that makes it easy to deploy, maintain, scale and run containers automatically. Kubernetes is known for its scalability and flexibility and allows on-premises, hybrid, or public cloud infrastructure to migrate workloads quickly.

Can I run a container without Docker? ›

Docker is a popular tool for creating, deploying, and running containers. However, there are other ways to use containers. Some other tools and technologies can be used to manage and work with containers, such as Kubernetes, rkt, LXC, and LXD.

Can Kubernetes run without cloud? ›

However, if you decide to use on-prem, you should know that Kubernetes alone, stripped of all the cloud services, won't be able to support your application. You'll need a plan on how to manage access control, load balancing, ingress, networking, provisioning, storage, and all the other vital infrastructure elements.

What is the basic understanding of Docker? ›

Docker is an open source platform that enables developers to build, deploy, run, update and manage containers—standardized, executable components that combine application source code with the operating system (OS) libraries and dependencies required to run that code in any environment.

What knowledge is required for Kubernetes? ›

The team required to manage Kubernetes must be versed in handling the same modern application paradigms. The team's skills should include designing self-service applications, autoscaling the infrastructure based on workload, and supporting users around the clock.

What is the basic understanding of Kubernetes? ›

Kubernetes is a flexible container management system developed by Google that's used to manage containerized applications in multiple environments.

Top Articles
Latest Posts
Article information

Author: Carlyn Walter

Last Updated:

Views: 6573

Rating: 5 / 5 (50 voted)

Reviews: 89% of readers found this page helpful

Author information

Name: Carlyn Walter

Birthday: 1996-01-03

Address: Suite 452 40815 Denyse Extensions, Sengermouth, OR 42374

Phone: +8501809515404

Job: Manufacturing Technician

Hobby: Table tennis, Archery, Vacation, Metal detecting, Yo-yoing, Crocheting, Creative writing

Introduction: My name is Carlyn Walter, I am a lively, glamorous, healthy, clean, powerful, calm, combative person who loves writing and wants to share my knowledge and understanding with you.