Re:Podman 4.0
by peachy_no_pie on Tuesday February 22, 2022 @05:36PM
(#30434854)
Podman uses runc as the default container runtime. Nerdctl uses containerd.
There are probably other differences but that's a substantial one imo.
This depends on the platform you're using. On Fedora and RHEL 9, the default runtime is crun. On RHEL 7 and RHEL 8, the default is runc. In any case they can be swapped as needed.
I think that's mixing apples with oranges really, as containerd uses runc as well.
nerdctl is a client app which speaks to containerd, which is a long running daemon.
podman uses a different architecture (no long running daemon)
Both projects use runc to actually launch the containers.
Podman has been a longer lived project. It's supposed mostly by Red Hat, which may be a plus or minus in your view. nerdctl re-uses more of moby's (formerly Docker CE) underlying tech. Podman has some nice convenience features to generate kube yaml or systemd units.
nerdctl is just a new client to target containerd.
Containerd has been around a long time, it was originally part of Docker itself, but was separated out and is now a standalone project.
Docker uses containerd as part of it's standard deployment.
Containerd is a long running daemon (similar to dockerd), so that's where the difference lies in that podman (in it's default setup) doesn't have a long running daemon.
The closest analogy to containerd in RH land is CRI-O.
[0]: https://github.com/containerd/nerdctl