48 points

Docker. It’s been around longer, it’s more polished, easier to learn, simpler to use, supported everywhere and by everything, easy to find solutions when you search for help, doesn’t depend on systemd, compatible with every container image out there, and you can do things with it even if it’s not the “correct” way to do it while podman will tell you “no, you can’t do that”.

permalink
report
reply
31 points

If your distro offers it, rootless podman + podman system service is the best setup, IMO. That will give you a docker command that is 1-to-1 compatible with docker and lets you use tools like docker-compose that expect a docker service socket. Then you can just follow tutorials that only explain things for docker.

permalink
report
reply
1 point

will it let you do rootless nfs mounts into the container? That’s the showstopper for me, as that is by far the best way to just make this all work within the context of my file storage.

permalink
report
parent
reply
1 point

My only issue with rootless is that SWAG doesn’t work with it, otherwise my other containers could be rootless. However, I heard connecting rootful and rootless containers is impossible so all my containers are rootful right now.

permalink
report
parent
reply
-14 points

What is rootless bring brought up so much? It’s a container, it’s isolated from the host anyway, what does it matter what user runs inside? And if something breaks into the container they can trash the app in it and the shared volumes anyway, even if they’re not root.

permalink
report
parent
reply
17 points
*

Defense in depth. If something escapes the container it’s limited to only what’s under that user and not the whole system. Having access to the whole system makes it easier for malware to hide/persist itself.

permalink
report
parent
reply
-4 points

Correct me if I’m wrong but containerization is enforced by the kernel, correct? If something escapes you’re pretty much screwed anyway.

permalink
report
parent
reply
7 points

Because a container is only as isolated from the host as you want it to be.

Suppose you run a container and mount the entire filesystem into it. If that container is running as root, it can then read and write anything it likes (including password databases and /etc/sudo)

permalink
report
parent
reply
-10 points

So what? If I mount / in the container and choose to run it as root that’s my business. Why would the containerization engine second-guess what I’m doing?

How would you like it if sudo told you “I can’t let you be root, you could read and write anything you like, including password databases and /etc/sudo”?

permalink
report
parent
reply
6 points

It depends on the use case. The most common security issue I have seen with docker is on Linux desktop systems: docker deamon runs as root and user wants to use it to test all kinds of containers. So they make the docker socket accessible to the user, to lazy to use “sudo docker” every time… Having access to the docker socket means having the same permissions as the one running the daemon: root . Your browser effectively now has root permissions. At this point you could just login as root to your desktop.

permalink
report
parent
reply
4 points
*

There’s real usability benefits too. I’ve collected some anecdotes from Reddit:

Rootless podman is my first choice for using containers now, it works fantastically well in my experience. It’s so much nicer to have all my container related stuff like volumes, configs, the control socket, etc. in my home directory and standard user paths vs. scattered all over the system. Permission issues with bind mounts just totally disappear when you go rootless. It’s so much easier and better than the root privileged daemon.

and,

If you are on Linux, there is the fantastic podman option “–userns keep-id” which will make sure the uid inside+the container is the same as your current user uid.+

and,

Yeah in my experience with rootless you don’t need to worry about UID shenanigans anymore. Containers can do stuff as root (from their perspective at least) all they want but any files you bind mount into the container are still just owned/modified by your user account on the host system (not a root user bleeding through from the container).

finally,

The permissions (rwx) don’t change, but the uid/gid is mapped. E.g. uid 0 is the running user outside the container, by uid 1 will be mapped to 100000 (configurable), and say 5000 inside the container is mapped to 105000. I don’t remember the exact mapping but it works roughly like that.

permalink
report
parent
reply
22 points

Podman, rootless containers work well, and there is no central process running everything. I like that starting containers on boot is integrated with systemd.

permalink
report
reply
3 points
*

How do you automatically start podman containers? I currently just manually add systemd entries but that’s a lot more cumbersome than Docker which doesn’t require you to do anything at all.

permalink
report
parent
reply
6 points

I use Quadlet, which is now merged in podman. The only issue I had with it is running system systemd services as other (rootless) users, I can’t get it to create cid files that the users can access. In those cases only, I have to modify the generated services files, which defeats the purpose.

permalink
report
parent
reply
4 points

That’s how you do it, you have to write systemd config files for each container. And because it was cumbersome they’ve come up with third party tools that write them for you and launch the container. 😉

permalink
report
parent
reply
2 points

Since I use Docker Compose with Podman, I just make a single systemd service to run Docker Compose on boot, thereby starting all my containers at once.

permalink
report
parent
reply
1 point

That’s an interesting way to do it. Do you have everything in 1 compose file?

permalink
report
parent
reply
0 points

i would like to try… but as far as i know, there is no “docker compose up -d”

permalink
report
parent
reply
10 points

Podman supports docker compose just fine. You have to run it as a service, so that it can expose a socket like docker does, but it supports doing exactly that

permalink
report
parent
reply
4 points

Apparently it does! podman-compose

permalink
report
parent
reply
1 point

cool, thank you!

permalink
report
parent
reply
17 points

Don’t overthink this. Just start using something.

permalink
report
reply
5 points

This is the best advice. Bloody hard for me to do, however. Not sure why.

permalink
report
parent
reply
8 points

Podman, dockerd is a single point of failure

permalink
report
reply

Selfhosted

!selfhosted@lemmy.world

Create post

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:

  1. Be civil: we’re here to support and learn from one another. Insults won’t be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. 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.

  4. Don’t duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

Community stats

  • 4.8K

    Monthly active users

  • 3.5K

    Posts

  • 79K

    Comments