Podman is solid, just don't use podman-compose but rather utilize the Systemd integration for container management.
With very few exceptions, it works just as well as Docker these days.
A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.
Rules:
Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.
No spam posting.
Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.
Don't duplicate the full text of your blog or github here. Just post the link for folks to click.
Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).
No trolling.
Resources:
Any issues on the community? Report it using the report flag.
Questions? DM the mods!
Podman is solid, just don't use podman-compose but rather utilize the Systemd integration for container management.
With very few exceptions, it works just as well as Docker these days.
utilize the Systemd integration for container management.
The systemd integration is probably the thing I dislike most about it. 😆 Systemd has no business managing containers IMO, it should manage podman and podman should manage the containers. It's a completely gratuitous mix of concerns but it seems that podman is set on becoming a systemd subsystem... so I'll probably never use it.
On a related note, the systemd expansion is getting ridiculous. It's gotten to the point if you read one day that wayland is being merged into systemd you wouldn't even know if it's a joke.
A container is a service, makes perfect sense for me to manage that via Systemd like all other services.
Sure, anything can be a service if you want it to be hard enough. Like the bootloader.
Bet. Give me puppies as a service.
One of the reasons I use containers instead of installing things directly is that i can completely uninstall a service by deleting a single directory (that contains a compose.yml and any necessary volumes) and running a docker/podman system prune -a
or that i can back up everything by backing up a single "containers" dir, which i could have on a subvolume and snapshot if i wanted to
systemd/quadlet on the other hand makes me throw files in /etc (which is where you're supposed to put them, but ends up resulting in them being tangled together with base system configuration often partially managed by the package manager)
The Solution™ to this is configuration management like ansible or whatnot, which needlessly overcomplicates things for the use cases i need (though they're still useful for getting a base system "container ready" wrt ssh hardening and such)
tldr: i want my base system to be separated from my services, and systemd integration is the exact wrong tool for this job
You might want to avoid looking into systemd-homed
It's not the "official" way to do it, but you can make systemd run Docker Compose (talking to Podman instead of Docker), which is pretty close to what you're talking about. And then you don't have to write stinky systemd INI files for each container.
But you don't need to have systemd run anything (except docker or podman itself). Just run containers with "restart: always" and docker/podman will start them on boot, restart them of they fail, and leave them alone if they're manually stopped.
You only need to run compose when you are [re]provisioning a container.
Podman does not start your containrs on boot. You need to do some magic yoursefel. Like a cronjob that starts all containers at boot.
When you used the Podman systemd integration it starts containers on boot just fine. You can even configure it to auto-update containers. Very hassle free.
Podman is CLI and API compatible with Docker (except where differences in implementation doesn't allow it)
Running Podman as root is 99.9% the same as running Docker.
I have been running my homelab with Podman for several years and it is absolutely mature enough for a regular user.
Also, the docs are really good.
Tried switching some time back, didn't take long to go back to docker. Podman does not have the polish that docker has taken years to perfect and as much as I love systemd, managing containers in docker is 10x better.
Explain your feelings on the matter please. I think podman is very good, and just the fact that it doesn't need to run as root OOTB is enough for me to switch. Yes, Docker can do that, but I'm ideologically on Podman's side now. No coming back AFAIK
It took your comment for me to understand that 'podman' is not some podcast manager, but a docker competitor.
I've been using podman instead of Docker for a couple years now. I'm not a heavy user, but it doesn't ever break for me and I appreciate the pods and ease of turning pod config into a kubernetes deployment.
I tried switching a while back, but I found a bunch of stuff didn't work properly, and wasn't considered supported. I don't remember what it was exactly.
I might try it again once there's been a bit more development and community use. Docker isn't ideal, but at least it works and there's a lot of community support.
I switched a year ago to podman and had some trouble to get everything running. But it is possible. I'm not running anything rootful and everything works.
Read the docs, use podman-compose (this sadly has no good docs, but works quit well when you got it) and get ready to play around with permissions and file ownership.
Switched a long time ago - it's just soooo much easier and I never have any problems
My only serious complaint with docker is the quality of their updates. They keep breaking stuff. If podman supported all docker functionality including compose based stacks, I’d consider switching, but last time I looked it didn’t.
There is a wrapper for podman supporting compose.
But maybe it's time to use kubernetes deployments or pods instead of compose files...
Yeah, the constant Docker breakage was one of the main reasons I switched to Podman. FYI you can use Docker Compose directly with Podman.
If you’re only on Linux and don’t ever touch containers on Windows or Mac, podman can work fairly well. You need to be comfortable with orchestration tools like k8s to replace compose (or just do a ton of containers) and you can’t use a lot of COTS that has hardcoded dockerisms (localstack, for example, does not work well with podman).
If you have to use Windows or Mac, podman makes life really difficult because you’re running through a VM and it’s just not worth it yet.
Docker on Windows and Mac also runs containers through a VM though. (It's more obvious on Windows, where you need WSL (powered by a VM) and Hyper-V (a way to run VMs on Windows). But on a Mac, VMs to run Linux are also used to run Docker containers inside the VM.)
Podman Desktop helps to abstract VMs away on Windows and macOS: https://podman-desktop.io/
For the command line, there's "podman machine" to abstract away the VM. https://podman.io/docs/installation (installing on macOS is mentioned on that page and Windows has a link to more docs which also uses the podman machine command.)
As for Docker compose, you can use it directly with Podman too: https://www.redhat.com/sysadmin/podman-docker-compose (there's also podman-compose as well). The only thing Docker compose doesn't support with Podman is swarm functionality.
Docker compose can even work with rootless Podman containers on a user account. It requires an environment variable. https://major.io/p/rootless-container-management-with-docker-compose-and-podman/ (it's basically enabling the socket for podman and using the environment variable to point at the user podman socket)
I switched to podman half a year ago and it was a mess, I had a lot of compatibility and permission issues also, it's hard to support red hat after the drama
It should be harder to support Docker, which hasn't released a new open source product since before Docker Desktop, which is also proprietary. Podman Desktop? OSS. It'd be hard to name a product Red Hat supports that isn't OSS.
That's also true, my bad
well I've been using both for quite a while. If you just want something that works, stick with docker. There is nothing wrong with docker in the homelab scenario and podman has rough edges that cringes you. If you are a control freak like me who wants to control every aspect of container running, then podman is a great tool that forces you into the habbit of learning and tinkering. It helped me understand a hell lot of things.
I fully admit I'm slow sometimes. I could never understand the podman solution for that common scenario when podman runs as one user ID on the host and the image uses a completely different user ID that doesn't even exist on the host. And no, unfortunately I can't always go look for a better image, even though I agree that images should be written to allow for ID selection. But they aren't.
Why not try docker rootless? Been using it for 2 years and does everything docker does.
Only thing I miss is proper support for some services I use. Minikube is afaik still a pain with podman, at least rootless. Gitlab runner still doesn’t support podman completely imho. But a plus to docker is that they still build packages for EL 7 while the podman version in EL 7 is pretty damn old. Besides from that I went podman all the way.
It's got a long way to go to catch up.