Hacker News new | ask | show | jobs
by R0flcopt3r 917 days ago
podman can't replace docker-compose. it can only replace docker. if you install podman-docker any docker command you run will be translated to a podman command. I think that should work when you run docker-compose as well.
3 comments

podman works great with docker-compose through the docker socket emulation. I just use the upstream vanilla docker-compose with it (also works with docker compose as a plugin for Docker CLI).

Podman Desktop also offers to set the socket emulation and Docker compatibility up for you, if you like.

It's not quite enough. You also have to run a server too - docker-compose won't run without a docker service running.

podman-compose will and it behaves more or less the same way but it's quite a neglected piece of software - lots of bugs, lots of open PRs.

A lot of people talk about quadlets or k8s as alternatives but I don't think these are generally good substitutes for compose.

If your distro is relatively recent, enable podman.socket (available as system and user unit) and things should just work as they do with docker. You may have to set CONTAINER_HOST though, and the new Docker CLI has the concept of contexts where you need to point the CLI at the right socket, but confusingly using docker as a library does not automatically add contexts as functionality, so Tools like flyctl (from fly.io) and melange (chainguard's APK builder) may still need CONTAINER_HOST anyway...
can you please clarify, from technical perspective

> enable podman.socket (available as system and user unit)

Won't it make podman be daemon then if it'd be activated by socket?

Won't such a daemon be run as root then to be able to handle creation of networks/ports forwardings/multiple-users?

As I said, there's a user unit (systemctl --user status podman.socket) that will run rootless just like using the podman CLI without elevation.
at some point it's easier to just use docker
other tools prefering to use CONTAINER_HOST instead of docker contexts happens without podman too, because docker didn't build contexts into their go client library and it's instead all in the docker CLI.
> podman can't replace docker-compose.

podman-compose[1] replaces docker-compose.

[1] https://docs.podman.io/en/latest/markdown/podman-compose.1.h...