Today I switched to Quadlet to start Linux containers
This post is written simply for myself to mark the date when I fully decided to ditch Ansible’s containers.podman.podman_containers, and Podman’s nasty port of docker-compose, in favour of Quadlet. Hopefully this page can serve as a useful reference for others considering the same move.
Problems with containers.podman.podman_containers
Ansible is great, but it’s a pain if you ssh on to a server, to find a container is down. You then have to jump on to another server to run the playbook to start the container.
Problems with docker-compose
Technically I use the port of docker-compose - podman-compose, but it frequently exits with Python stacktraces, and I’ve had to resort to quite a bit of “up, down, up, down”, to get it to start containers.
Problems I had with podman generate systemd
This solution worked really nicely for me, with one little issue - the conmon.pid file was not being included in the service file, meaning that starting/stopping the container reliably was a bit of a pain, especially after reboots. I found myself manually adding the PIDFILE=... line to the service file, which was cumbersome.
Problems solved by Quadlet
systemctl enableto start containers on boot.- Standard
systemctlcommands to start, stop, restart and check the status of containers. - Free
journalctlintegration. - Super easy portability of container configuration between servers, just copy the
.containerfile
[Unit]
Description=UAR
After=local-fs.target
[Container]
Image=ghcr.io/jamesread/uncomplicated-alert-receiver:latest
PublishPort=6666:8080
ContainerName=uar
Environment=ALERTMANAGER_HOST="http://am.webapps.teratan.lan"
[Install]
WantedBy=multi-user.target
James is a "full stack" Open Source enthusiast, who enjoys creating no-nonsense open source software.