Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

quadlets == systemd which requires root to run. this is NOT the same thing as "systemd cant run non root containers". OBVIOUSLY it can, just as docker can run non root containers.

Making systemd a necessary dependency to run > 1 container kinda negates many of the the nice advantages that podman has of not requiring root.

podman compose doesnt require root and would serve as a substitute but it's a very neglected piece of software.



You can do non-root systemd units, including Quadlets. See <https://docs.podman.io/en/latest/markdown/podman-systemd.uni...> under "Podman rootless unit search path."


I recently started making the switch from docker (and docker compose) to using podman and quadlet, but holy crap is the documentation for podman quadlets a big f-you wall-of-text mandoc that would make Torvalds proud. I've read thru that and am still not quite sure of how to get from point A to point B.

To replace a single docker compose file, sounds like one needs to manually create a number of .container, .volume, .network, .kube files correctly so systemd can spin up a container pod? Is that what I'm reading? Is there nothing that can generate that from a docker-compose.yml?


I agree. That documentation really needs some love. But if you see the discussions on github issues about quadlet features a common theme is maintainers dismissing requests because "that shouldn't be done in production" or "that won't scale". It seems they can't wrap their head around people wanting to do simple things or someone doing things by themselves at home and not for work at a big company or corporation, and that reflects on that documentation.

Working for one myself, which does have a support contract wit Red Hat, I kinda get where they're coming from--if they make it easy to shoot yourself in the foot, dumb people shoot themselves in the foot in production and they have to fix the mess later. But for that they could have a sanctioned build for clients and a community build for everybody else, just like they have Fedora and RHEL.


I've used Podlet <https://github.com/containers/podlet> somewhat successfully for this.


you can run docker containers without them requiring root too.

systemd itself is a root service. it shouldnt be a necessary dependency to run > 1 containers without root. somehow it is.


systemd user units can be run by non-root users.

https://wiki.archlinux.org/title/Systemd/User


not the point as i mentioned above.

systemd itself requires root.


How were you planning to run podman compose without an init process running as root?


what else would you like to bundle in the init process? docker compose as well? maybe kubernetes too. a webserver? a word processor perhaps? maybe an email client?


>what else would you like to bundle in the init process? docker compose as well?

You can complain that you don't liken systemd's design or that it does too much (very overplayed complaint, but ok).

But that's an orthogonal point to the initial complaint you've made that it's somehow bad that this requires systemd to run.

That complain is moot, since you'd be running systemd anyway, with or without those containers. And it's double moot, because you can run > 1 containers (with podman) without root too.

(It's also wrong that systemd was added container compose capabilities - podman is what translates things to systemd "speak")


>You can complain that you don't liken systemd's design or that it does too much (very overplayed complaint, but ok).

It's not at all orthogonal. Making the "default" way to run > 1 containers together require the init process is fucking stupid.

Similar to how requiring ROOT to run containers was a stupid design decision made by docker.

This decision to make quadlets the "default podman orchestrator" and to double down on it relegates podman from being "a better docker" to just "docker just with different design mistakes".

>That complain is moot, since you'd be running systemd anyway

false. systemd is not the only pid 1 in existence (much as it likes to pretend it is). when you run a container inside a container there also isn't a systemd.

>And it's double moot, because you can run > 1 containers (with podman) without root too.

except there is NO good orchestration system for doing that. podman compose is a steaming pile of shit. quadlets requires systemd which requires root. docker compose requires a root service. you can run podman compose inside a container but not quadlets.

might as well just use docker at this rate.

>That complain is moot

Your comment comprehensively missed my point 3 times. It's triple moot. It would have been better left unmade.


Podman compose isn't bundled in the init process.


Yep, but have you used it? It's crap. It implements about half of what docker compose does.

I'd stop complaining about quadlets being a hunk of crap if podman compose were decently maintained.


I'm contesting your claim that podman compose is bundled with systemd.


I never made this claim.


So what was this about? What's the thing that the "else" refers to?

> what else would you like to bundle in the init process? docker compose as well? maybe kubernetes too. a webserver? a word processor perhaps? maybe an email client?


systemd is the init process, the Linux kernel non-optionally runs the init process as root


yeah thats what i said.

and that particular init process did way more than any init process ever should even before somebody had the bright idea to add "docker compose substitite" to its ever growing list of responsibilities.

you could put a word processor and games in their too if you really wanted. is that a good idea? ill leave that for the reader's judgment.


systemd just provides the feature to use a custom external application to configure a service based on a declarative spec, which podman uses to create actual systemd services from a declarative container spec.

From the podman docs:

> Podman supports building and starting containers (and creating volumes) via systemd by using a systemd generator.

Putting aside all the other issues one may have with systemd, this feels like a decent feature for a service manager to have (custom generation of service specifications).

> bright idea to add “Docker compose substitute”

Why is this so revolutionary? Docker-compose is just a service manager for containers. Systemd is a service manager. Systemd allowing podman to give it “container” features seems pretty reasonable.


> before somebody had the bright idea to add "docker compose substitite" to its ever growing list of responsibilities.

systemd itself isn’t acting as a docker-compose substitute. Podman simply translates unit files containing docker-esque configuration (image name, volumes, etc.) into plain systemd unit files that contain (among other things) an ExecStart line that starts the container with the proper arguments.


Installing packages (like podman or moby/docker) using dnf and apt requires root as well, so I'm not sure what your point is.


making systemd - a root service - a necessary dependency in order to orchestrate > 1 nonroot containers is both unnecessary and bad architecture.

It was a shitty decision that renders it just "a less popular docker" and not "a better docker".


Podman doesn't have a dependency on systemd. e.g. it is packaged in Void Linux.

Podman has a better architecture than Docker in that it can easily run on a non-privileged user.

Quadlet (aka podman-systemd.unit) is a podman-systemd integration which can make it easy to launch and orchestrate podman containers via systemd. You can get all if the systemd dependency handling, require other units to run after a container finishes, and all sorts of other useful things. Systemd "user" units (systemctl --user) also works here with the containers running as a non-privileged user in a non-root systemd context.

Just to be clear, Quadlet is just an integration and you can still run podman without it. You can still run podman on non-systemd systems as well.


And you can use podman to run multiple containers together (as a Pod). With or without systemd.


>Podman doesn't have a dependency on systemd

Just to be clear we're talking about QUADLETS, red hat's recommended way to orchestrate containers.

>Just to be clear, Quadlet is just an integration and you can still run podman without it.

Just to be clear, nobody was unclear about that.

It is, just to be clear, red hat's recommended way to orchestrate podman containers despite having this nasty dependency analogous to the one docker has on a root service.

Hope that helps.


>Just to be clear, nobody was unclear about that

Oh, you were quite unclear. Also wrong in saying you need systemd with podman to orchestrate multiple containers without root.

>It is, just to be clear, red hat's recommended way to orchestrate podman containers despite having this nasty dependency analogous to the one docker has on a root service.

It's not "red hat's recommended way to orchestrate podman containers" in general. It's "red hat's recommended way to orchestrate containers on top of systemd", that its whole point.

Nothing nasty about it either, you'd already be running systemd on your redhat system (and many non red-hat ones).


>Also wrong in saying you need systemd with podman to orchestrate multiple containers without root

I explicitly said thay it wasnt needed and that there werent other ways just that it was the recommended way.

>It's not "red hat's recommended way to orchestrate podman containers

It is.


wut? Containers need an operating system.

systemd runs on a linux host, the rootless container runs on a linux host, controlled by `systemctl --user ...`.


But you don't understand, it also needs an operating system therefore it is vulnerable, because things on it run as root! /s


  systemctl --user ...


That still depends on systemd, the most privileged deamon in many distros

But it is fun to see the marketing 360


Cool, so no PID Eins. I have no shares in systemd, so fine. What do you propose?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: