I am moving from docker to podman and selinux because I thought that podman is more secure and hence, the future. I thought the transition will be somewhat seamless. I even prepaired containers but once I migrated I still ran into issues.

minor issue: it’s podman-compose instead of podman compose. The hyphen feels like a step back because we moved from docker-compose to docker compose. But thT’s not a real issue.

podman does not autostart containers after boot. You have to manually start them, or write a start script. Or create a systemd unit for each of them.

Spinning up fresh services works most of the time but using old services that worked great with docker are a pain. I am wasting minutes after minutes because I struggle with permissions and other weird issues.

podman can’t use lower number ports such that you have to map the ports outside of the machine and forward them properly.

Documentation and tutorials are “all” for docker. Github issues are “all” for docker. There isn’t a lot of information floating around.

I’m still not done and I really wonder why I should move forward and not go back to docker. Painful experience so far. https://linuxhandbook.com/docker-vs-podman/ and following pages helped me a lot to get rid of my frustration with podman.

  • Molecular0079@lemmy.world
    link
    fedilink
    English
    arrow-up
    23
    ·
    edit-2
    10 months ago

    Your issues stem from going rootless. Podman Compose creates rootless containers and that may or may not be what you want. A lot more configuration needs to be done to get rootless containers working well for persistent services that use low ports, like enabling linger for specific users or enabling low ports for non-root users.

    If you want the traditional Docker experience (which is rootful) and figure out the migration towards rootless later, I’d recommend the following:

    1. Install podman-docker. This provides a seamless Docker compatibility layer for podman, allowing you to even use regular docker commands that get translated behind the scenes into Podman.
    2. Install regular docker-compose. This will work via podman-docker and gives you the native docker compose experience.
    3. Enable podman.socket and podman-restart.service. First one socket-activates the central Podman daemon, second one restarts any podman containers with a restart-policy of always on boot.
    4. Run your docker-compose commands using sudo, so sudo docker-compose up -d etc. You can run this with sudo podman compose as well if you’re allergic to hyphenation. Podman allows both rootful and rootless containers and the way you choose is by running the commands with sudo or not.

    This gets you to a very Docker-like experience and is what I am currently using to host my services. I do plan on getting familiar with rootless and systemd services and Kubernetes files, but I honestly haven’t had the time to figure all that out yet.

    • qaz@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      10 months ago

      Enable podman.socket and podman-restart.service. First one socket-activates the central Podman daemon, second one restarts any podman containers with a restart-policy of always on boot.

      Thanks, the last time I checked I was told that creating individual systemd services was the only viable solution and I ended up ditching podman because I didn’t think it was worth the hassle. I might try it again with your tips.

      • Molecular0079@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        edit-2
        10 months ago

        Definitely not necessary. If that was the case, it wouldn’t live up to it’s claims of being a transparent Docker replacement at all. I think you do need to use systemd if you want to go full rootless, but I haven’t tried it enough to make a solid call on that.

        But yeah, with the above steps, I’ve moved seamlessly over to Podman for my self hosting stack and I’ve never looked back. It’s also great because I can take literally any Docker Compose I find on the Internet and it will most likely just work.

  • hperrin@lemmy.world
    link
    fedilink
    arrow-up
    13
    ·
    10 months ago

    Regarding the low port number thing, that’s just a consequence of not running as root. By default, regular users can’t listen on ports below 1000.

  • GunnarGrop@lemmy.ml
    link
    fedilink
    arrow-up
    12
    ·
    10 months ago

    Writing systemd services for your containers is something yoully have to get used to with podman, pretty much. It’s actually very easy with the built in command “podman generate systemd”, so you can just do something like " podman generate systemd --name my-container > /etc/systemd/system". I much prefer managing my containers with systemd over the docker daemon. It’s nice!

    Also, podman can use privileged ports as root, right?

  • Vent@lemm.ee
    link
    fedilink
    arrow-up
    11
    ·
    10 months ago

    Podman is purposefully built to rely on systemd for running containers at startup. It ties in with the daemonless and rootless conventions. It’s also nice because systemd is already highly integrated with the rest of the OS, so doing things like making a container start up after a drive is mounted is trivial.

    Podman has a command to generate systemd files for your containers, which you can then use immediately or make some minor tweaks to your liking.

    I use podman for my homelab and enjoy it. I like the extra security and that it relies on standard linux systems like systemd and user permissions. It forces me to learn more about linux and things that apply to more than just podman. You can avoid a lot of trouble by running the containers as root and using network=host, but that takes away security and the fun of learning.

    • Molecular0079@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      10 months ago

      You can avoid a lot of trouble by running the containers as root and using network=host

      Root yes, but you can avoid network=host most of the time pretty easily. I am still struggling with going rootless myself tbh.

  • MigratingtoLemmy@lemmy.world
    link
    fedilink
    arrow-up
    7
    arrow-down
    1
    ·
    10 months ago

    Almost all of your problems are because you aren’t running as root. These aren’t bugs. They seem like a pain because you’re transitioning from Docker which runs as root (which is ABSOLUTELY INCORRIGIBLE in my opinion).

    SELinux is a different story though. Now that’s a hard to tame beast. Things go wrong easily if you don’t know what you’re doing.

    I suggest researching more before jumping off into a new technology, you seem like you weren’t anticipating some of these problems which adds to the frustration.

    • sudneo@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      10 months ago

      You can run docker rootless too. On local machines running docker with root is a risk that for many is acceptable. On servers and publicly exposed hosts, rootless.

  • rsolva@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    10 months ago

    Podman is great, but a lot of confusion arise from the rapid development the last ~year and the fact that different distros have relatively old versions in their repos.

    I recommend using the latest Fedora Server and defining your containers as quadlets. Also, on Fedora, yoi can install Cockpit (and cockpit-podman) and get a decent webgui to manage your host and container.

    I should just write a blog post about this instead of typing this up on my phone in bed 😆

  • Throwaway1234@sh.itjust.works
    link
    fedilink
    arrow-up
    4
    ·
    edit-2
    10 months ago

    podman does not autostart containers after boot. You have to manually start them, or write a start script. Or create a systemd unit for each of them.

    FWIW, I’m on Bluefin-dx (one of uBlue[1]'s images) and I’ve noticed that my containers autostart at boot since I’ve rebased from Silverblue to Bluefin-dx. Mind you; I’m not necessarily advocating for you to make the switch to Bluefin-dx, but it’s at least worth finding out how they’ve been able to achieve that and perhaps implement their ways for your own benefit.


    1. Which are mostly Fedora Atomic images with some QoL and thus SELinux, Podman (etc.) are just baked in as you would expect.
  • shastaxc@lemm.ee
    link
    fedilink
    arrow-up
    1
    ·
    10 months ago

    The only reasons I ever use podman is that is efficient with resources, and at work we can’t use Docker due to licensing purposes.

  • lemmyingly@lemm.ee
    link
    fedilink
    arrow-up
    1
    ·
    10 months ago

    Why do you believe podman is more secure than root-less Docker? Please educate me.

    I run root-ful and root-less Docker daemons at the same time on the same machine because there are limitations to what you can do without as root privileges. So where possible, containers run in root-less Docker and the lucky few that require root privileges run in root-ful Docker.