CallMeAl (like Alan)

Free Software Enthusiast

  • 3 Posts
  • 52 Comments
Joined 11 months ago
cake
Cake day: December 14th, 2025

help-circle








  • The usage is simple. If you name a quadlet (or systemd service unit file) with an @ in it then you can use it. Like foo@.container then anything you put between the @ and . is passed into the resulting unit file as %i.

    So systemctl start foo@bar.service will pass ‘bar’ in where %i exists in the unit file. From there you can use it in a StartPreExec or whatever else to do instance specific stuff when the instance of the containerized service start.

    Like ExecStartPre=/usr/local/bin/activate_config %i for example. A contrived example but hopefully you get the idea: with one quadlet file and a little scripting you can start many instances of a service that each automatically pull in their own configs.


  • I agree that ergonomics are also important, but for me not the top priority for me. For Podman, I like the way I can use Quadlet to quickly deploy and run containerized stuff.

    However I really like it for building and running my own app stack pods. The combination of Quadlet and SystemD instance aliases is very powerful. I use this to drive all kinds of configuration automation.



  • What do you mean by “clean design”?

    If you are comfortable reading the source code for each project that is the most revealing way to see the difference.

    In short, Docker has a lot more code because it duplicates a lot of kernel and systemd functionality (often poorly), uses multiple components that communication over grpc with each other to do things, requires setuid binaries, and defaults to running everything as root.

    Podman, is a straight forward clean simple program that fully uses kernel and systemd interfaces rather than duplicating functionality. Quadlet is build on systemd generators and its use of templates via systemd instances lets you use deterministic dynamic configuration in ways that is unlike anything in Docker.