I switched from Ubuntu to Fedora in my personal laptop a few months ago, also about the same time I installed Red Hat Enterprise Linux 8 as guest on Hyper-V for my job.

One of the first things I noticed was the lack of support for Docker and going full with Kubernetes and OpenShift, which means no real need for Docker. Currently almost all my work is run in Docker containers, therefore I was glad to know that Podman is a direct replacement for Docker.

The Pod Manager tool podman is a container engine, just like Docker, but without the requirement of a service daemon running all the time. It is supported by Red Hat and all the operating system relatives, such as Fedora and CentOS. It shares all docker sub-commands plus a few others. For more information read the podman’s manual pages.

podman talks directly to the image registry, the container and image storage, and with the Linux kernel through the runC container runtime process (not a daemon). Podman stores its containers and images in different places than Docker, each user has its own .local/share/containers directory, which allows to several user to use Podman concurrently. Podman an Docker images are compatible. Podamn allows to work with Kubernetes.

How I did it?

Make sure to have the latest updates for your operating system first, then install podman which is available by default in Fedora 31 and later releases.

sudo dnf update -y
sudo dnf install podman -y

Remove by hand the images you don’t want to migrate, old images, dangling intermediate build images, test, you know, anything that’s a waste of storage space. And then iterate through the Docker images and pull them into Podman.


for img in $(docker images --format '{{.Repository}}:{{.Tag}}'); \
do
echo $img; podman pull docker-daemon:$img; \
done

Review your images with podman, just like you’ll do with docker.

podman images

Now you’re ready to get rid of Docker. Stop the daemon, uninstall the package, delete directories that could use space and drop the docker user group.

docker system prune -a --volumes
sudo systemctl stop docker
sudo systemctl disable docker
sudo dnf remove moby-engine
sudo rm -rf /var/lib/docker /var/run/docker
sudo rm -rf /etc/docker ~/.docker
sudo groupdel docker

If you’re running CentOS or actual Red Hat Enterprise Linux, the install steps will change a bit.

Now what?

So far I haven’t had major issues using Podman, however there are some bumps. For example, I use docker-compose in several projects for development, I know there is something called podman-compose, which I need to review.

Some CI/CD pipelines in my projects expect the docker command, I haven’t make my mind to change that, as I said images are compatible, but I’d like to use the same tools all along the pipeline, I want to avoid doing alias podman=docker.

Podman and Buildah for Docker user is a good read for starters.