Podman is a lot like Docker: a tool for running OCI containers. While it maintains backwards compatibility with Dockerfile and docker-compose syntax, it offers a lot of other benefits:

  • daemonless: it can run containers without a daemon process running in the background.
  • Rootless: can run containers without root privileges
  • pods: can group containers into secluded pods, which share resources and network namespace

Podman has other features I haven’t explored yet, like compatibility with Kubernetes yaml file, and being able to run containers as systemd units.

Have you used podman before? What are your thoughts on it?

  • Bizarroland@kbin.social
    link
    fedilink
    arrow-up
    5
    ·
    1 year ago

    I was scrolling through and this caught my eye but I totally misread it on first glance, I thought you typed “Pokemon is a demon” and I had to stop and scroll back cuz I was like oh shit this is going to be a good thread.

  • sbstp@programming.dev
    link
    fedilink
    arrow-up
    4
    ·
    1 year ago

    I tried replacing some components of my NAS server that were on docker/docker-compose with podman but unfortunately it was not a 100% drop-in replacement. I had networking issues in podman that I did not have in docker.

    The network stack is implemented quite differently in podman than in docker, once you start using more advanced features the backward compatibility disappears.

    Since it came second, I think it has a lot of technical advantages, avoiding docker’s mistakes and what not. In the long term I’ll probably switch to it, unless Redhat keeps shooting itself in the foot…

  • eeleech@lemm.ee
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    I exclusively use podman instead of docker at work and at home and haven’t encountered any unsolvable problems.

  • darq@kbin.social
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    I tried a couple of times to get Docker running rootlessly on my local machine, without just granting root-like permissions to the user. Spent a few hours reading just the worst documentation that tells you to do things with absolutely no explanation of why, feeling like an idiot.

    Then I installed Podman. It worked more-or-less out of the box, and I got on with the rest of my project.

  • 0x442e472e@feddit.de
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    We are trying to use podman as a way to run Testcontainers and build images on a kubernetes cluster using Gitlab CI. Building works, but running Testcontainers doesn’t so far :(

      • 0x442e472e@feddit.de
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        Yes but imo it’s easier and nicer to integrate Podman into an existing build, for example with maven

        • killabeezio@lemm.ee
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          You typically don’t use podman to build images and you would instead use something like buildah.

            • killabeezio@lemm.ee
              link
              fedilink
              arrow-up
              2
              ·
              1 year ago

              Somewhat, but just a few pieces of it. Podman build is mainly a way to be backwards compatible with the docker cli. Buildah has some more flexibility and the way it builds the images are slightly different. You can use podman to build, but it’s probably better to move to buildah for the build step as time permits.

      • 0x442e472e@feddit.de
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        We are using the kubernetes executor. You can add additional sidecar services for your jobs, and we’re using that mechanic to run podman as a daemon. There are some gotchas I had to solve if I remember, but now it works nicely for us. Except for Testcontainers, which throws an exception when your Testcontainer is exposing ports

        • agilob@programming.dev
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          I got it all working on self hosted kubernetes and crossplatform builds with buildah. What’s your problem exactly? For TC you need to use some env vars to configure ports in .gitlabci

              • 0x442e472e@feddit.de
                link
                fedilink
                arrow-up
                1
                ·
                1 year ago

                I’m very interested in a solution. Our current setup, where we use an external docker host for Testcontainers and Podman to build images is quite painful

                • agilob@programming.dev
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  1 year ago

                  I have this on my to-do list, but sorry, can’t promise when I’ll make a working demo. afair the trick was to use something like “podman in-podman”, like dind works in GitLab runners and then some env-vars manipulation so TC thinks it runs in docker, something like

                  DOCKER_HOST=unix:///run/user/1000/podman/podman.sock and I use alpine as gitlab-ci helper image:

                          image = "docker.io/alpine:3.17.2"
                          helper_image_flavor = "alpine"
                  

                  not sure if that matters, but i had lots of strange problems running with Ubuntu helper images, most were DNS propagation issues

  • ono@lemmy.ca
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    Docker has rootless containers, too, although I think Podman has slightly better options for unprivileged uid management.

    Daemonless is appealing, especially for low-powered servers. Getting rid of Docker’s background resource usage is the main reason Podman is on my to-do list.

    I imagine pods could be handy to reduce network configuration for related services.

    I like that the tools exist to make Podman a drop-in replacement for Docker, including the building of containers.

    I have no interest in systemd; I hope it’s optional.

  • sashanoraa@lemmy.blahaj.zone
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    I generally prefer podman to docker at this point for the reasons you stated. However, podman is not 100% compatible with docker, and I have run in to issues with a few tools, that were admittedly poorly written. Mostly around how they deal with file permission when move files in and out of containers.