DEV Community

Cover image for Podman : An Alternative To Docker ?

Podman : An Alternative To Docker ?

Arafet Ben Kilani on June 19, 2023

While docker has undoubtedly revolutionized the way we develop, deploy, and run applications, it's worth exploring what sets Podman (Pod Manager) a...
Collapse
 
mellen profile image
Matt Ellen-Tsivintzeli

I'm confused by the statement "Podman's architecture is daemonless." Followed by "Podman addresses the mentioned challenges by directly interacting with container registries, containers, and image storage without the need for a daemon hence the daemonless architecture."

It really sounds like Podman is a daemon. Is it daemonless in the same senses as no-code (there is code, just not written by you) or serverless (there are servers, you just have no control over them)? So there is a daemon it just doesn't run as root?

When you say Podman directly interacts with containers, how is it not a daemon?

Collapse
 
arafetki profile image
Arafet Ben Kilani • Edited

A daemon typically runs as a long-lived background process, starting at system boot and continuing to run indefinitely.
the Podman process in other hand is invoked when you execute a specific command . Once the command is completed the Podman process terminates.

Also a daemon don't require a user session or a user interacting with them while podman requires to be invoked by a user in the terminal for it to run after getting the job done it terminates.

Hope I answered your question

Collapse
 
mellen profile image
Matt Ellen-Tsivintzeli

Yes. Thank you.

Collapse
 
tbroyer profile image
Thomas Broyer

A container is actually a "containerized process" (within a user namespace, network namespace, chroot, mount namespace, cgroup, etc.) Podman arranges for starting that containerized process from an OCI image. It does not need a daemon for that, at most does it need a process that runs for as long as the containerized process (which could be long-running, or just a few milliseconds/seconds long)

Docker has a daemon that receives commands from a client, and that daemon will start/stop containers. It has to be running early and stop late to be able to receive the commands you'll send it (most likely through the Docker CLI, or Docker Desktop)

Collapse
 
mrgoonie profile image
Goon Nguyen

The rootless mode of Podman is the main reason why I started adopting it as a primary builder in my open source project (Diginext), definitely worth it.

Collapse
 
livioribeiro profile image
Livio Ribeiro

The "single point of failure" argument is not true, it was in the past but since a few years ago the containers launched by docker are not child processes, and will continue to run even if the docker deamon stops

Collapse
 
rastarr profile image
Martin

Well since most of my docker containers run in my Synology NAS, is there an easy way for Podman on Synology?

Collapse
 
arafetki profile image
Arafet Ben Kilani

if your os is based on linux , depending on the distro, they have official repos for each.
while im not familiar with Synology NAS if you have a terminal and a package manager like apt or dnf installed on it you good to go

Collapse
 
omnifarious profile image
Eric Hopper

Right now, I'm trying to pick apart how podman is handling a bridge network, and I can't find the bridge device even though there very clearly is one because several pods have distinct IPs in a /24 and they can talk to each other. Somehow, this is being managed, and it's not by the daemon that creates a userspace fake NAT connection (slirp4netns).

So, podman does have daemons that get launched as needed as ordinary user processes (not root processes) that manage certain resources.

And I'm being very frustrated by my inability to find the network namespace the bridge is living in, which appears to not be managed by any daemon at all. :-(

Collapse
 
matthewdean profile image
Matthew Dean

I’m confused why this article essentially concludes with, “Don’t use this”??

The “absolutely not” answer is never explained nor justified, so I don’t understand the point of this article if you believe no one should replace Docker with this.

Collapse
 
shaijut profile image
Shaiju T

Nice, what is the alternative to kubernetes then ?

Collapse
 
arafetki profile image
Arafet Ben Kilani

There are couple alternatives
the ones i know are Aws Elastic Container Service and docker swarm (deprecated)
But kubernetes is the most widely adopted container orchestration platform with a large community
it's the best out there

Collapse
 
habibeng profile image
Habib-eng

I think that the daemonless architecture of podman is the reason for managing containers without kernel namespaces like docker, is that true ?

Collapse
 
arafetki profile image
Arafet Ben Kilani

When it comes to containerization they both utilize kernel features such as namespaces, cgroups ...
daemonless only means that podman don't rely on a central daemon process

Collapse
 
deep1910 profile image
deep1910

Does podman takes images from the same docker registry or does it have some own registry , can it pull images from third party registries

Collapse
 
tbroyer profile image
Thomas Broyer

Podman does not have a "default registry" configured by default, so you have (by default) to used qualified names (i.e. docker.io/… for the Docker Hub)

But it can pull from any OCI-compatible registry: Docker Hub, Quay.io, GitHub, GCR, etc.

Collapse
 
chenjiayi8 profile image
chenjiayi8

I don't get it. If a container crashed who is going to restart it?

Collapse
 
dyaskur profile image
Muhammad Dyas Yaskur

Is there any performance difference?

Collapse
 
arafetki profile image
Arafet Ben Kilani

It depends but the absence of a daemon can result in reduced resource consumption and faster startup times.