• 4 Posts
  • 57 Comments
Joined 4 months ago
cake
Cake day: June 23rd, 2024

help-circle
  • Awesome, so, essentially, you create a name.pod file like so: […]and join every container into the pod through the following line in the .container files

    Yep, that’s the way!

    and I presume this all gets started via systemctl --user start name.service and systemd/podman figures out somehow which containers will have to be created and joined into the pod, or do they all have to be started individually?

    Systemd figures it out iff you have specified your service dependencies correctly, with things like After=, Upholds=, BindsTo=, etc. Have a look at systemd.unit manpage for details. For my paperless service, it goes something like this:

    1. The entrypoint is paperless.container, which I start with systemctl --user start paperless, which depends on:
      • paperless.pod
      • Three other services, which also depend on:
        • paperless.pod
    2. Systemd figures out that the paperless pod should be started first, and does that
    3. Systemd startes the three dependent containers
    4. Finally, systemd starts the paperless container itself

    The point of quadlet was to lean as heavily as possible on systemd for the service and dependency bits and use podman only for translating the container bits into something systemd can handle. The one bit of dependency handling that quadlet does is to make sure that paperless.pod is started before all containers that have Pod=paperless.pod in their quadlet file.

    Either way, I find the documentation of this feature lacking. When I tested this stuff myself, I’ll look into improving it.

    That would be amazing, of course! :) I find that, if you’re familiar with unit files, you’re like 85% of the way there already. By the way, the unit files that quadlet generates are somewhere in $XDG_RUNTUME_DIR for you to inspect. I’m afraid I’m not at a computer right now andI don’t know the exact path off the top of my head.