Today, I'm thrilled to discuss a particularly hot topic:
Docker versus Podman.
Which one should you choose?
What are the differences?
Well, today I'm going to help you make that decision.
My name is Cedric Clyburn.
I'm a developer advocate at Red Hat.
And let's just jump right in and start talking about Docker.
Now, Docker,
it's a name synonymous with containers.
Docker helped pioneer containerization technology to what it is today,
and it's made containers one of the most important
and most popular developer tools that we have today.
So containers can help us to take and package together our code,
our libraries, our runtime,
all in one singular unit that we can then deploy in a variety
of different environments, but essentially making our life easier and fundamentally
changing the way that we deploy and manage applications.
So thanks Docker
Now Docker is made up of several different components.
You might have heard of some before, such as the Docker file,
which is a set of instructions in order to build images.
Of course we've got the images
which then contain everything that we need to run a container.
Now the container is run
by a special part of Docker called the Docker engine.
Now the Docker engine is what's running in the background when we're using Docker.
So you can think about the architecture like this.
Here we have our CLI,
our Docker desktop application that we're using by chance.
And when we're doing different actions
like building images or pushing them or running containers,
what's actually happening in the background
is we're using a background daemon process.
Now what is this?
This is a process that's doing all the heavy lifting for us
for Docker.
So it's running the containers, it's working with registries,
it's pulling down images, it's doing all of the heavy lifting.
This is what's known as a client server approach.
Now, there are some limitations for the Docker Daemon
in the background because it is running on your system on root.
So that means if you're an organization and you don't have root access
or sudo access, you'll have to ask for that in order to be able to run Docker commands.
Additionally, the Docker daemon running on your system
with root can be a security loophole.
However, that's where Podman comes in
Podman is also a container engine
for working with containers and containerized applications.
However, it has a focus on security
and what's unique about it is it doesn't have this central daemon.
So we'll talk about this here in a second.
But Pod man is comprised of the same components.
So we've got images, we've got containers.
And keep in mind, these are all based around something called the OCI.
This is the Open Container Initiative, which essentially finds
how containers and containerization technologies should work.
In addition to images, containers and everything else that Docker has.
We also have the addition of pods just like the name.
So Pods is a Kubernetes concept that essentially
allows us to have multiple containers in one coupled unit
where they're sharing tightly the same volume and network.
So maybe this is a proxy and this is our actual JavaScript application.
Now we can take this and put it into a pod.
So Podman allows us to extract these manifest,
these YAML files and actually deploy them into our Kubernetes cluster.
So it makes the transition to Kubernetes a lot easier.
In addition, just like Docker, we've got the Podman engine.
But as I mentioned before, it works a little differently.
So instead of having this central daemon process and connecting to it from our client,
we're using the client directly.
And when we're working with new containers,
what's happening is Podman is forking itself
and this new child process then becomes the container.
So it works with a daemon-less architecture,
which allows it to run by default in a rootless fashion.
Now, you'll notice again
that these components are very similar based on the OCI standards.
This makes it very easy to go from Docker to Podman
and Podman to Docker, or to learn both.
So what would be a Docker push, a Docker pull,
would just be a Podman push or a Podman pull.
So this makes it very easy when working with both of these.
Now let's take a look at actually the differences in between Podman and Docker.
So if you're looking for a daemon-less container engine
Podman is right for you.
But Docker is still using the daemon in the background.
Now, this also allows for rootless by default.
However, Docker
doesn't do this by default, but it can with some limitations.
Now if you want Docker specific features such as Swarm,
well Docker is here for that, which helps you do container orchestration.
Now if you're looking for multi container applications with compose,
both Docker as Docker compose
and Podman has Podman compose.
So both of them support it.
Now if you're looking at running
this container engine on whether it be Mac, Windows or your favorite distribution of Linux,
both Docker has the Docker desktop and the Docker CLI,
and Podman has the Podman desktop and Podman CLI.
So it doesn't matter if you're visual person
or you like the command line.
Both container engines could be the right pick for you.
But how do we really determine which one that we should use?
Well, let's start off with Docker.
Docker, as mentioned before, is the pioneer
and the industry standard for containerization.
Now, that means they have more documentation, a larger user group
and more guides out there if you're getting started with Docker.
Additionally, there are some features that are just native
to Docker, such as Docker Swarm.
That Podman simply doesn't have.
Now Podman can make it super easy to get started without needing a daemon
and get set up moving not only just container images
but also moving to Kubernetes.
So if you're looking to get started with Kubernetes or move your workload
to Kubernetes as a orchestrator,
Podman might be the right choice for you.
In addition, for running containers
in a rootless fashion and not having a daemon,
it's more focused on security.
So both Docker and Podman are fantastic container engines
So now you know the differences between Docker and Podman.
Now I have a question for you.
Are you team Docker or Team Podman?
Then let us know down in the comments.
Hey, thanks for watching this video, as always.
Don't forget to like and subscribe and we'll see you in the next one.