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

One of the nastiest aspects of migrating from docker to podman really is "what to do about docker compose?" coz there are three wildly divergent ways to answer that all of which really suck under certain specific circumstances.

Im no fan of docker and podman by itself is a step up but orchestration headaches are enough to ruin that.



> "what to do about docker compose?"

I don't understand what you're asking here. The answer to that is probably nothing. That is unless you want:

- systemd to manage your containers - You want to use K8s primitives (which are mostly compatible)

I'm unsure what the 3rd method is you're talking about. The nice thing about Podman's compose API is you don't have to change anything (mostly). You can point all your docker tooling to Podman's socket, and it'll (mostly) magically work.


the three options are:

* use systemd, red hat's favorite kitchen sink for handling everything from setting up sound services to mounting your home dir to logging so why not this too i guess.

* docker compose where i have to run a whole separate podman service to lie to docker compose about not actually being docker.

* podman compose which would be the obvious solution if it didnt just plain suck.


> * use systemd, red hat's favorite kitchen sink for handling everything

Systemd is a tool for managing services. Containers are services. Why require an entirely separate bespoke service manager when you're already running one?

> * docker compose where i have to run a whole separate podman service to lie to docker compose about not actually being docker.

This is the same system state as using docker compose with docker: you have a client program speaking to a backing daemon. Only difference here is the Podman service, being daemonless, only runs when needed (assuming you're setting up things the documented way by enabling the podman socket).

> * podman compose which would be the obvious solution if it didnt just plain suck.

Yeah I haven't had the best luck with it either. But part of the reason it's languished is that it makes more sense to just reimplement the Compose spec on the backend rather than re-invent the wheel and create a new compose client as well.

There's also the fourth option of writing Kubernetes yaml and applying that with `podman kube play`. Honestly this is probably closer to being the podman equivalent of docker compose but since it involves writing The Bad YAML (kubernetes) rather than The Good YAML (compose) most people don't use it.


>Systemd is a tool for managing services

It's a tool for user age verification that happens to be something you can use to manage services.

Did you miss my point about it being a filthy kitchen sink?

>This is the same system state as using docker compose with docker

One of the major selling points of podman is that you dont need a daemon. except maybe yes you do because podman compose sucks so toss that selling point in the trash.

This shit is also incredibly fiddly. Ever had "docker compose" and "docker-compose" do subtly different things which drive your team mate to pull their hair out? I have.

Podman should stop trying to piggyback off docker if it's trying to be an alternative.

>Yeah I haven't had the best luck with it either. But part of the reason it's languished is that it makes more sense to just reimplement the Compose spec on the backend

Personally I suspect it languished because Red Hat simply cant abide the idea that somebody out there might avoid using systemd for something.

They happily built a docker compose to quadlets converter but they cant bring themselves to make podman compose not be a piece of shit even though it wouldnt be a lot of work.


> It's a tool for user age verification that happens to be something you can use to manage services.

Good talk buddy.

> Did you miss my point about it being a filthy kitchen sink?

I suspect there's not really a point in responding to this since you've already made up your mind.

Nevertheless, yes I am aware the systemd project contains many modular components. Some of which are good (systemd-the-service-manager that is what I was referring to), some of them are bad, and some of them are just odd (still haven't wrapped my head around systemd-homed's purpose). Podman integrates with the systemd service manager, not the rest of the project, so I'm really not concerned about that: there is no point where I am unable to use quadlets because I don't have, say `systemd-timesyncd` installed.

On the gripping hand, Quadlets are just a systemd-generator so there's nothing stopping you from getting that exact same benefits of Quadlets with some other service manager. You'd just have to write that implementation (and probably your own bespoke service manager) and will probably miss out on some of the niceties systemd provides to anything it manages.

> One of the major selling points of podman is that you dont need a daemon. except maybe yes you do because podman compose sucks so toss that selling point in the trash.

You skipped the second part of my sentence where I reminded you that Podman is daemonless. There is no long-running Podman daemon/service/etc, it is spun up on demand and then stops when the action is done. Having a second process instance is not a daemon, and I'm not sure how you would have expected this to work otherwise.

> Ever had "docker compose" and "docker-compose" do subtly different things which drive your team mate to pull their hair out? I have.

..Take this up with docker?

> Personally I suspect it languished because Red Hat simply cant abide the idea that somebody out there might avoid using systemd for something. > They happily built a docker compose to quadlets converter but they cant bring themselves to make podman compose not be a piece of shit even though it wouldnt be a lot of work.

I don't think `podman-compose` was ever an official Red Hat project. I don't think there was every really much interest in ironing out all the corner cases, especially before compose was actually fully specced, and once Podman itself implemented the spec the interest has been drying up.

Assuming you're referring to podlet[0] for the latter, that was never a Red Hat project.

[0] https://github.com/containers/podlet


>I suspect there's not really a point in responding to this since you've already made up your mind.

I suspect you ignored the point because you didnt want to address the point.

My repeating it seems to only have highlighted your wish to continue avoiding it here.

>Nevertheless, yes I am aware the systemd project contains many modular components.

Another red herring. "Modular" really isnt the point here.

It's certainly one way to justify throwing even more shit in an already overloaded kitchen sink though.

>You skipped the second part of my sentence where I reminded you that Podman is daemonless.

No, you skipped the part where I acknowledged that it was daemonless-by-default but you actually DO need to run a podman daemon if you're using docker compose with podman.

>Take this up with docker?

They're not responsible for podman trying to piggyback on their tools.


This is what stopped me from picking up Podman more, all our devs use Docker and have been writing compose files for years now. When the response at the time was "you're using Podman wrong, Quadlets are the hot stuff now" it just felt like too big a risk and commitment to jump to at the time. Have things settled more? Getting away from Docker is a bigger priority nowadays for us.


podman compose has shifted from "basically never works" to "if an existing YAML isnt too complex it works" but it's not a drop in replacement yet.

i also want to stay the hell away from quadlets or any other software which tries to make me use systemd more.




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

Search: