I’ve spent the last couple days fiddling with Debian Bookworm RC2 in a VM. No issues to report. It’s shaping up to be a great release.
I’ve been looking for a suitable Docker replacement for a few years because of their repeated license shenanigans. Last year I tried switching to Podman, but ran into into several incompatibilities and minor annoyances.
Podman 4.3 ships with Bookworm and seems to fix all
the issues I had before. Rootless containers, multi-stage
builds, and all of my muscle-memory docker
commands now
work as expected. There is even a decent clone of docker-compose
named (surprise!) podman-compose.
The only real differences I noticed are:
- The command is
podman
instead ofdocker
. - Image names must be registry-prefixed. Example:
FROM docker.io/bash
instead ofFROM bash
. - Searches must be registry-prefixed. Example:
podman search docker.io/pablotron
.
A couple of quick tests:
Update (2023-05-05): I put together a simple web application named Bookman to put podman-compose through it’s paces. It uses multiple containers, multi-stage builds, boot dependencies, secrets, and volumes.
Here’s a log of the setup process, and here’s a screenshot of the exposed web interface.
Update (2023-05-13): I upgraded several VMs from Bullseye (and one from Stretch!?!) to Bookworm, without any significant issues.
After upgrading to Bookworm, I migrated two VMs from Docker to Podman and installed Podman on a third VM. Useful tip: Rootless Podman does not agree with an NFS-mounted home directory.
One workaround is to create a local (that is, non-NFS), user-owned
directory and then symlink ~/.local/share/containers
to it, like so:
# create local containers directory for user pabs,
# then symlink ~pabs/.local/share/containers to it.
sudo mkdir -pm 700 /data/containers/pabs && \
sudo chown pabs:pabs /data/containers/pabs && \
ln -s /data/containers/pabs ~pabs/.local/share/containers
Alternatively, the Podman man page and Storage Table section of the
storage.conf
documentation suggest editing the
graphroot
in ~/.config/containers/storage.conf
and pointing at a
local directory.