I’m looking to migrate all of my containers to rootless podman but need some advice.
All of my services are currently running docker compose. I’ve played arount with podman but I am unsure of best practice: I have the option of installing podman-docker, podman-compose, or docker-compose connected to a podman socket. What’s the recommended way here?
I also can’t seem to find any information on setting up a systemd unit for rootless podman compose. How are you all auto starting podman (compose) files?
I run everything in rootless containers using systemd service files generated with
podman generate systemd
.Podman Compose is a “community effort”, and Red Hat seems to be less focused on its development (here is their post about it).
There are ways to get it working but I find it easier to go with podman containers and pods through systemd because the majority of documentation (both official and unofficial) leans in that direction.
I don’t know how much you already know, so here is just a summary of things that worked for me for anyone reading.
Podman uses the concept of “Pods” to link together associated containers and manage name spaces, networking, etc. The high level summary for running podman pods through systemd:
podman pod create --name=<mypod>
.podman run --pod=<mypod> ...
and reconfigure until containers are working within the same pod as desired.Note: for standalone containers that are not linked or reliant on other containers, you
canshould skip creating the empty pod and can skip the--pod=<mypod>
when starting containers. This should result in a single service file generated and that container will operate independently.This post goes over pods as systemd services.
This doc goes over containers as systemd services.
The Red Hat Enterprise Linux docs have a good amount of info, as well as their “sysadmin” series of posts.
Here are some harder to find things I’ve had to hunt down that might help with troubleshooting:
loginctl enable-linger <username>
or else rootless pods/containers will stop when you log out of that session.[Install]
section of the systemd file, see this doc page. Podman generate systemd should take care of this.container-selinux
that has some useful booleans that can help with specific policies (container-use-devices
is a good one if your container needs access to a GPU or similar). Link to repoThis is great info thank you
Do note that it’s not necessary to generate systemd files for each container separately. Just generate for the pod and podman will handle generating the additional services required.
This is extremely helpful and gives me all the answers I was looking for. Thank you