I don’t really have anyone else to shout at about this, but it’s an amazing way to host services in rootless containers entirely in user space using systemd (systemctl --user
).
https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html
I love the concept too and I just hope it will catch on much more than this. To convert your compose files you could use Podlet. I’m also working on converting it to JavaScript(PodletJS) so it’s available in it-tools.
Go for Podlet though, really nice for command lines.
Sorry for all the links, I got overly excited 😆
I used podlet on my compose file. I was a little disappointed in the limitations, as a lot of things like variable interpolation isn’t available.
That said, the output made me wonder why I’ve waited! It was so much simpler than I imagined. It also helped demystify unit files a bit more.
Thank you for telling me about Podlet. I’ve been using
podman-compose
for all my containers but I’ve thought about converting them to systemd units. The only thing I’m unsure about is whether it’ll still be easy to access the container files. Currently I have acontainers
folder with a folder for each service inside it. Inside that, there’s thecompose.yml
and the folders with the container data. I map all container folders, with data that needs to be kept, to a folder that sits right next to the compose file. If it’s just temporary data (like caches), I oftentimes map it to a volume because it doesn’t matter if I lose it. Do you know if I can still do it like this (or in a similar way) if I use systemd units?The spec for quadlets has a few dedicated homes for the .pod, .container, etc. files. You can absolutely mount directories or files wherever (
%h
is$HOME
for systemd unit files). See the Volume description for Container unit files: https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html#volume
hell yeah! i moved my whole setup from docker to podman with systemd with quadlets. auto updates and everything. so smooth.
Ah yes, a fellow quadlet enjoyer. Cheers!
Did
$ /usr/lib/systemd/system-generators/podman-system-generator --user --dryrun
Also prove to be really valuable, too?
I didn’t use that! I had a docker-compose file and used podlet to translate (which took a little massaging due to it not supporting interpolations).
/usr/libexec/podman/quadlet --user --dryrun
was quite helpful though!
Yeah, those are very convenient and much easier than having to deal with Kubernetes or such.
Yeah replacing my k3s -> microk8s -> k3s multi-month headache with like 5 basic quadlet files in an evening was so wonderful and a relief
Nice, did the same for some services I run at home. Now in the process of migrating my stuff on my vps from docker compose to quadlets. It’s a bit more involved but worth the QoL stuff quadlets bring with them, like automatic updates and systemd integration. I’m curious, which is your Linux distro of choice to run your podman quadlets on?
I’m now running quadlets on Garuda (my gaming/devbox), and Fedora. The impetus for this was needing to host service in an unprivileged way at work on RHEL9, so I got paid to do some learning with my own services.
My laptop is running Bazzite, but no services there. I’ll move the server to silverblue or another image based distro when I finish extracting the rest of my misadventures to containers.
I like them very much as well, only thing I’m annoyed about is that you always need to drag that
--user
option… I mean, if I’m not using root or sudo, shouldn’t it be clear that I’m talking about the user space?Agreed! That would be a huge QoL improvement (and work just like the podman command does). Now I’m thinking about other commands that force this silliness, like
pip
.I’ll probably just make an alias