Docker is dead? Podman – an alternative tool?

272 points by F_J_H 3 years ago | 180 comments
  • smarx007 3 years ago
    How did the intro get so many things wrong?!

    1. Mirantis did not acquire Docker Inc., they only bought Docker Enterprise. See https://techcrunch.com/2019/11/13/mirantis-acquires-docker-e... and https://www.docker.com/blog/docker-enterprise-edition/

    2. k8s didn't remove dockershim for political reasons but because containerd was refactored out of Docker long time ago and k8s wanted to get rid of the extra layer. See https://kubernetes.io/blog/2022/01/07/kubernetes-is-moving-o...

    3. Rate limits have nothing to do with the container runtime. Podman also has to get images from somewhere. And Cloudfront bills starting at $0.02/GB (assuming you pump 5PB+) have to be paid somehow. The rate limits were mostly in place to deny corporate CI users access to the Hub free of charge and force them to pay or deploy a mirror.

    4. RedHat offers not only packages in RHEL but also support and it makes sense they will offer packaging and support only for podman (a RH project) going forward. This does not concern us who don't pay for RH support.

    Having said that, Podman is a nice evolution of Docker. Though I am not sure how much I can trust the rest of the article given how the intro twisted so many facts.

    • bornfreddy 3 years ago
      Also:

      > Instead of free use of Docker Desktop until now, this software suite is now available for rent after the transition phase until the end of January 2022, starting at $5 per user/month, provided it is for professional use.

      > Here, Docker Desktop includes the Docker Engine, docker-cli, docker-compose and a credential helper, among others.

      At least docker-compose (and probably also docker service + cli, since it is included in Debian) is FOSS. While they might be included in Docker Desktop, they are certainly available separately, so paying for the licence is in no way obligatory when using docker.

      • lesam 3 years ago
        Yeah, the main benefit of docker desktop is packaging up a nice Linux VM on Mac/Windows, plus some UI features. There’s a reason ’Docker Desktop for Linux’ came so much later.
        • 411111111111111 3 years ago
          Dunno, I think WSL2 is actually better on that front. Just do the super secure "curl get.docker.com|bash" in it and you're golden. Even better UX then docker desktop if you specifically don't want a GUI
      • hiroshui 3 years ago
        I wrote a comment for the general comment section, but wanted to respond to your comment as it contains valid criticism.

        1. Mirantis did not acquire Docker Inc., they only bought Docker Enterprise...

        >> You are right. That's a mistake.

        2. k8s did'nt remove dockershim for political reason..

        >> That is a valid point and the official story. Imho I think the acquisition was nevertheless something that played an accelerating role in this, since it happened relatively soon after the acquisition. Mirantis acquired Docker Enterprise in November 2019, and the end of Dockershim support was announced in 2020. I've heard that from a few other people as well. BUT this is just rumor, so you might be right.

        3. Rate limits have nothing to do with the container runtime..

        >> This is 100% true. Nevertheless, dockerhub is part of Docker and therefore a rate limit on the official Docker registry is something that has made our customers switch registry to other registry providers or implement their own container registry. Therefore, they are getting rid of this service, which is part of the Docker-only ecosystem, so its usage in enterprises is decreasing.

        4. RedHat support switched to Podman as it is on of their products..

        >> It only makes sense for RedHat to support Podman since it's from their own product forge. You are right about that. That said, there are a lot of companies using RH and paying for it, which automatically leads to a decrease in Docker usage vs Podman. Less use of Docker means more use of Podman. Last but not least, RedHat would not invent Podman if there was no need for an independent tool to Docker. Podman helps in some areas where Docker lacks features, such as support for pods, rootless mode, etc.

        Thanks for your criticism! It is appreciated and helps us to do better.

        • stingraycharles 3 years ago
          > The rate limits were mostly in place to deny corporate CI users access to the Hub free of charge and force them to pay or deploy a mirror.

          What I never understood is why they didn’t just properly handle this with mirrors like any package manager does; why is this a problem for docker, but not for yum / apt / etc?

          I have to admit that these rate limits have accelerated my migration to alternatives like quay.io

          • forty 3 years ago
            By default container images are not signed (there is notary, but it's not commonly used - maybe notary V2 will change that - and I think the signature changes depending on the registry it's hosted on anyway?) which make it inconvenient to mirror.

            Now, why are we still producing new package formats without mandatory signatures (containers, npm, cargo, etc) is not really clear to me. I guess everyone must think "those old crazy Unix folks signing their Deb and Rpm must have had their crazy reasons, but we have no reason to do the same" :) a more cynical thinking would say "it makes it inconvenient to mirror things and easier to build a business from the central repository" :)

            • afiori 3 years ago
              I believe that adding key handling as a necessary step for npm, docker, and similar registries isn't a good idea.

              But it would be easy to sign all packages: if the author has decided not to use signatures the registry adds it's own signature, at any moment the author can choose to start using their own keys in place of the registrie's

              • nijave 3 years ago
                The layers have checksums so couldn't you store the metadata centrally and mirror the checksummed blobs?
                • slim 3 years ago
                  There's also the conspiracy : "it's the CIA who infiltrated docker to get access on every server in the world" ;)
                • vocram 3 years ago
                  They opposed to add support to private mirrors in the software, probably to retain their monopolistic position

                  https://github.com/moby/moby/pull/34319

                • Nullabillity 3 years ago
                  Docker is a for-profit company. The question wasn't "how do we ensure that this stays available?" but "how do we make money from this?".
                  • stingraycharles 3 years ago
                    To that I say that Docker is a great example of terrible choices on how to monetize their technology, this being one of them.
                  • zbentley 3 years ago
                    A guess: it takes a long time to get a reliable network of mirrors (mostly spent building relationships with institutions, like universities, with both the bandwidth/infrastructure you need and the willingness to lend it for free), and Docker is quite new.
                    • dhzhzjsbevs 3 years ago
                      Why would anyone give a for product company free stuff? You don't get to have it both ways. It's either open source or it's not and from what I've seen of docker, it's very closed.
                  • tyingq 3 years ago
                    The details are wrong, but I think there's some merit in the general thought:

                    "Docker the company is having trouble monetizing their products...so I'm unsure about their future"

                    And, so the follow on of:

                    "Can I use compatible tools that don't depend on Docker, the company, as much?"

                    Makes some sense.

                    • vocram 3 years ago
                      > To execute the images Podman then uses e.g. the mentioned containerd,

                      Another wrong thing. Podman directly controls the runtime (crun or runC). It does not talk with containerd like Docker.

                      • sigg3 3 years ago
                        Right. This is a major selling point of podman in Red Hat material.
                    • qbasic_forever 3 years ago
                      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.

                      I really wish rootless podman/docker was the default install now. It's still kind of annoying to setup with reading a smattering of old docs and having to think about your distro setup, cgroups settings, etc. It really should just be a "run this install script and you're done".

                      • the8472 3 years ago
                        The problem with rootless is that you don't get a native network stack since setting up bridges and veth devices still requires some elevated capabilities. But instead of running full root this could be outsourced to a helper executable with some caps set (a narrower version of suid).

                        > Permission issues with bind mounts just totally disappear when you go rootless.

                        Recent kernel versions have gained uid mapping capabilities on mounts. Hopefully future docker will make use of it. Then we can run entire containers as different users.

                        • phoronixrly 3 years ago
                          TBH I don't want to expose the native network stack to containers
                          • the8472 3 years ago
                            If your concern is kernel attack surface then I have bad news for you. Inside the container's network namespace it's still using standard syscalls. Only on the host side it takes a detour through userspace. So you get all the downsides, none of the native performance and very few upsides. It only benefits firewalls that still assume a machine has a single network interface without bridging/natting/forwarding.
                        • teekert 3 years ago
                          Are you saying that all files from your containers are owned by you as user? If so I will start investigating right now. It is so super annoying to download something with nzbget for example and then having to go through sudo to get to your downloaded files. It is indeed my major gripe with my docker compose setup atm.

                          Or just messing with a html file in the nginx docker bind mount, ugh!

                          If podman solves that I’m going all in tomorrow.

                          • nickjj 3 years ago
                            > Are you saying that all files from your containers are owned by you as user? If so I will start investigating right now

                            You can do this with Docker today without much fuss.

                            Here's a bunch of web app examples (Flask, Rails, Django, Node, Phoenix) that run your containers as a non-root user which ensures any volume mounted files end up being set to your Docker host's user along with running your main process as a non-root user: https://github.com/nickjj?tab=repositories&q=docker-*-exampl...

                            There's no hard coding of user names either. The user name created in the Docker image never directly gets mapped back to your Docker host.

                            This works because bind mounts happen over uid:gid 1000:1000 by default, so as long as your Docker host user's uid:gid is 1000:1000 everything works out of the box. On Windows and macOS you don't need to even think about this because Docker Desktop will fix permissions for you and on native Linux chances are your user uid:gid is 1000:1000 because it's the first non-root user on your system. For non-controllable environments like CI you'd typically disable volumes which is a good idea anyways because you're probably not using volumes in production. For single server deploys on a self managed VPS you control the environment. I covered this in a little more detail in my DockerCon talk at: https://nickjanetakis.com/blog/best-practices-around-product...

                            In the worst case scenario where you have no other options you can make the Dockerfile more complicated and introduce build args for the uid:gid so you can change it to satisfy the needs of a specific host but I don't like this since you'd need to rebuild a different image for a different environment, but it would technically work. I've never run into this scenario after having used Docker since 2014. I've also done contract work for dozens of companies in all sorts of different environments.

                            • zbentley 3 years ago
                              That's fair, but that issue is more common than you think. Some folks use Linux desktop systems with multiple users: shared computers (family or university--not all lab environments have sane workstation user management, unfortunately), or a personal computer with multiple accounts for separation (e.g. a home and work user) both come to mind.

                              And sure, UID remapping is available, but that's no longer in the realm of "just works".

                            • eriksjolund 3 years ago
                              The --uidmap and --gidmap options can map your regular user on the host to any specific user inside the container.

                              These options may look to be a bit complicated to use, but as soon as you understand how rootless Podman maps UIDs and GIDs it will be pretty straight forward.

                              I wrote two troubleshooting tips about how to use them:

                              https://github.com/containers/podman/blob/main/troubleshooti...

                              https://github.com/containers/podman/blob/main/troubleshooti...

                              • lapser 3 years ago
                                Root inside the container is the same as your user.
                                • RyEgswuCsn 3 years ago
                                  No it’s not. File written from inside the container into a mounted volume as root will be owned by root outside the container (uid 0, to be specific; doesn’t matter what the user is named).

                                  Edit: I might have misunderstood parent, who might be referring to Podman attempting to manage the uid mapping.

                                • digital_voodoo 3 years ago
                                  Something that can't be solved by PUID/PGID in the command or in Compose?
                                • pkulak 3 years ago
                                  The arch wiki is my go to every time I install Podman, and it’s a little easier every time. It’s down to like two steps now, with no file editing. We’ll get there.
                                  • forty 3 years ago
                                    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.
                                    • johnchristopher 3 years ago
                                      > Permission issues with bind mounts just totally disappear when you go rootless.

                                      I have a problem with mounting a named foo in a container (at /foo) and bindfsing the underlying directory of that volume on ${HOME}/foo with create-for parameters so that when the host user touch files in it they are owned by host 1000:1000 but inside the container it's owned by 33:33.

                                      Volume foo really contains only a unix socket. This unix socket is shared between the host and the container for xdebug communication.

                                      So, this doesn't work, the container process can't write/read the socket even though it can manipulate other files in the mounted volumes /foo and they appear as owned by 1000:1000 on the host and vice versa.

                                      But if I mount the volume directly like that: ${HOME}/foo:/foo then it works and the container can write to the socket and the host and the container can communicate both ways.

                                      Would rootless podman allow me to use a named volume ? Why doesn't it work like I think it should, is it because the unix socket lives in the kernel 'or something' ? Maybe it's a question for SO.

                                      • krageon 3 years ago
                                        It probably is a question for SO, where it would be best described with a script that sets up the minimum environment required to reproduce and the situation that you want to achieve. This description doesn't quite get me to an understanding of the problem, but that may be a personal issue.
                                        • dhzhzjsbevs 3 years ago
                                          Change the ids of the user inside the container to match what's needed on the host or take a look at subuid's.
                                          • johnchristopher 3 years ago
                                            > Change the ids of the user inside the container to match what's needed on the host or take a look at subuid's.

                                            Oh, I tried running the process in the container under a different uid but it complained about unprivileged user. Going the other way may do it, thanks. Although it requires more fiddling with stock images.

                                        • sureglymop 3 years ago
                                          What about UID issues? I remember using it years ago and sometimes having permission issues in containers when mounting local files. How is that nowadays? I much prefer running this in a rootless manner also. What about docker compose? Is there an alternative for podman?
                                          • qbasic_forever 3 years ago
                                            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).
                                            • capableweb 3 years ago
                                              How does that work in practice? Podman is changing the permission bits of files that are synced between the host and the container?

                                              If I create a file with certain permission bits in the container, I'd expect the file to be 100% identical when pulling it over to the host, but maybe that's just "legacy" thinking coming from my docker experience?

                                              What about copying files directly between containers, would that change the permissions as well?

                                            • stingraycharles 3 years ago
                                              There’s podman-compose which does what you want, but is a community maintained script.

                                              There’s also the ability for podman to run as a system service, and provide an OCI compatible container API. This then integrates seamlessly with the actual docker-compose.

                                              See: https://www.redhat.com/sysadmin/podman-docker-compose

                                              • znpy 3 years ago
                                                You can point the official docker-compose at podman now!

                                                I do that!

                                                It's 99.999% compatible as the podman people basicaly reimplemented all the docker daemon APIs.

                                                It sometimes lags a bit behind, because sometime docker implements new stuff... But for usage with docker-compose it has worked flawlessly for me.

                                                EDIT: you can also export the podman unix socket via socat, i also tried it to run a rootless docker runtime in kubernetes (podman daemon running as a pod, to run docker builds in kubernetes) as an experiment. It works but i'd love to see a better integration with Gitlab runner project.

                                                Gitlab is supposedly getting podman support any time soon, in 15.1 IIRC ?

                                              • lolcat_cowsay 3 years ago
                                                Nah no good alternative yet, I tried running my docker compose file which works perfectly with docker in podman compose and it failed outright.
                                              • solarkraft 3 years ago
                                                I don't know. When I tried it I got a lot of networking issues with components even the existence of which was barely documented online.
                                              • jordemort 3 years ago
                                                Why not both?

                                                Since Podman 4.1 came out with full Compose 2.x compatibility, I'm running Podman on Docker's socket, but using Docker's CLI to talk to it, so that I can use the buildx and compose CLI plugins. It works great, Docker's CLI doesn't seem to have any clue that it's talking to not-Docker. I even have VSCode's Docker extension and Remote Containers working this way.

                                                • matsemann 3 years ago
                                                  Is the compose support recent? Tried earlier this year, and it was not nearly there. And I use docker compose stuff as remote interpreter in IntelliJ/Pycharm stuff, that didn't work well with podman when I tested.

                                                  I don't really care what I use, I just want to be able to develop locally without spending days setting stuff up. Rootless or whatever means nothing to me. Docker compose have made that easy for lots of otherwise complicated projects. Just compose up, point editor at the image and ready to go.

                                                  • lapser 3 years ago
                                                    It is at least a year or so old. But there have been quite a few bugs, and iirc it was only at v4 where incompatible bugs have been ironed out. Not that it wasn't usable previously, you'd just run into a few issues.
                                                    • mekster 3 years ago
                                                      > Not that it wasn't usable previously, you'd just run into a few issues.

                                                      I don't like that definition of "usable".

                                                      Compose v2.0 compatibility became available only since last month which was very late.

                                                      If podman isn't for technical benefit, is this all about political decision for RH to govern container ecosystem on their own instead of dealing with docker?

                                                  • 3 years ago
                                                    • zamalek 3 years ago
                                                      On my system I have a very small `docker` script that selectively calls either `podman` or `buildah bud` depending on the first arg. The CLIs are completely compatible.
                                                      • jcastro 3 years ago
                                                        Is there any config to set up this way or do you literally just run podman on the socket and it just knows what to do?
                                                        • pkulak 3 years ago
                                                          You can set it as systemd socket service, so it doesn’t even run until something tries to connect.

                                                          That said, I don’t even bother with that. Podman can run K8s configs, and they are yaml too, only slightly more verbose than a compose file, if you strip everything out you don’t need. The CLI is nicer than compose too, with proper commands instead of tying up a terminal until a ctrl-c.

                                                          • sureglymop 3 years ago
                                                            So you can use kubectl but it talks to podman and not to the api of a k8s cluster? Or does it have its own cli?
                                                          • piyh 3 years ago
                                                            • cipherboy 3 years ago
                                                              As a fun fact, you can also run:

                                                                  $ systemctl --user enable --now podman.socket
                                                                  $ export DOCKER_HOST=unix:///run/user/$UID/podman/podman.sock
                                                              
                                                              and get a rootless, Docker-compatible socket. If you're running, e.g., a test suite written against the Go Moby APIs, this will execute the containers with Podman rather than with the system daemon.
                                                          • gigatexal 3 years ago
                                                            Wow did not know about full compose support going to check it out now.
                                                            • mekster 3 years ago
                                                              That took a while... Although I don't see what benefit I get by going podman when docker works fine and I don't really care about theoretical rootless security enhancement.
                                                              • BossingAround 3 years ago
                                                                Can I use Docker on my company projects, or can I use it for personal use only? I was under the impression that Docker doesn't allow professional use with the unpaid license, though I might have gotten it wrong.
                                                                • gigatexal 3 years ago
                                                                  Rootless pods in production sound dope. Keeping a security mindset while developing locally makes sense, no?
                                                            • Havoc 3 years ago
                                                              Think it is rapidly moving towards being more of a data carrier/format rather than being dead per se.

                                                              Half the time you're jamming it into some cloud service anyway where you have no idea what GCP/fly/aws is using under the hood to actually run it.

                                                              Meaning this discussion is more relevant to the self-hosted context. In which case I'd say containerization isn't really security. So in my mind that residual risk of the daemon being root is inconsequential. (Or if not use a VM).

                                                              • pjmlp 3 years ago
                                                                Indeed the proof being stuff like Kata Containers, which augment them with VMs anyway.

                                                                Personally, after dealing with Kubernetes yaml spaghetti, I rather deal with VM images, but unfortunately I don't get to dictate IT fashion.

                                                                • djbusby 3 years ago
                                                                  I'm still in the VM all the things camp. Like, containers are neat but VMs have the same cheapness for me - that is deploy some VM per app. Like Docker per app. Many times these days I'm one VM for just one Docker package. (Can you tell VM is my favorite isolation method)
                                                                  • Havoc 3 years ago
                                                                    >I'm still in the VM all the things camp.

                                                                    I do both with deciding factor being whether it has internet exposure.

                                                                    >VMs have the same cheapness for me

                                                                    It's all kinda relative (ballooning etc), but from what I've seen LXC allows for much higher density. Lowest LXC I've got running is ~20MB used. Lowest VM is at 380MB. Both headless debians so vaguely comparable (though MQTT vs Wireguard).

                                                                    Not much of a difference if you've got a 128gb server on hand, yet its nearly 20x so depending on perspective its either a big difference or doesn't matter.

                                                                    • jolux 3 years ago
                                                                      Fargate and Fly are actually both Firecracker VMs, not containers.
                                                                      • djbusby 3 years ago
                                                                        Yea, super fast boot VMs are a game changer in the container vs VM game.
                                                                      • LunaSea 3 years ago
                                                                        I don't think people mind using VMs rather than containers.

                                                                        The preference comes from the tool chain which is simpler for containers (even if you use Vagrant) and performance ( true or not, lots of people still have the sluggish VMs in mind.

                                                                        • tluyben2 3 years ago
                                                                          > lots of people still have the sluggish VMs in mind.

                                                                          I did, until trying firecracker.

                                                                        • magicalhippo 3 years ago
                                                                          I'm quite new to this side of things. Could you shed some light on how I could get docker-like simplicity but in VMs?
                                                                        • ungamedplayer 3 years ago
                                                                          Just to be clear, privileged containers with CAP_SYS_ADMIN do have additional privileges outside of normal 'containerized' workloads, just having it in a container does not mean that the security side affects are inconsequential.
                                                                          • krageon 3 years ago
                                                                            Kind of a weird take, to be honest. If containerization is not security, them not running as root should be an absolutely critical first step for managing risk.
                                                                            • Havoc 3 years ago
                                                                              >If containerization is not security

                                                                              Call it less secure than VMs if you prefer that wording.

                                                                              >not running as root should be an absolutely critical first step for managing risk.

                                                                              Kinda depends on what angle you come at it from risk management. You could take something less secure (containers) and try to tweak it to meet whatever level of residual risk you deem acceptable. Or you could just jump straight to VM and benefit from the inherent higher level of separation.

                                                                              The fact that all the big players with their clever engineers have specifically opted for VM tech (e.g. AWS creating firecracker for lambda) tells me the later is probably the way to go.

                                                                              That said I mostly do stick to containers when in a trusted environment.

                                                                              • krageon 3 years ago
                                                                                The "if" was not meant to indicate I doubted you. I agree. It was to indicate a prior in the sense of "if this is true, this other thing should also be true).

                                                                                VMs are also not a foolproof solution to operational security. It depends entirely on your risk appetite. If you're going to run containers, you should run them with as little permissions as you can. Hence, rootless.

                                                                          • lapser 3 years ago
                                                                            This article misses quite a bit.

                                                                            Podman has a full Docker compatible API, so you just have to enable it, and then set the DOCKER_HOST to point to its socket. From there docker compose should work as if you had Docker.

                                                                            Podman also is currently working on "podman machine", which can spin up a Linux VM to run Podman on macOS and Windows. I think it's still in beta or something, but it seems to be working already.

                                                                            There is also things like Podman Desktop[0] and Podman Desktop Companion[1] which attempt to bring an experience similar to Docker Desktop to Podman.

                                                                            [0] https://podman-desktop.io/

                                                                            [1] https://iongion.github.io/podman-desktop-companion/

                                                                            • lioeters 3 years ago
                                                                              About "podman machine":

                                                                              > Podman also runs on Mac and Windows, where it provides a native podman CLI and embeds a guest Linux system to launch your containers. This guest is referred to as a Podman machine and is managed with the `podman machine` command.

                                                                              > ..On Mac, each Podman machine is backed by a QEMU based virtual machine.

                                                                              > ..On Windows, each Podman machine is backed by a virtualized Windows System for Linux (WSLv2) distribution.

                                                                              https://podman.io/getting-started/installation.html

                                                                            • jdoss 3 years ago
                                                                              I only use Podman for my workloads these days. Docker was always a headache for me on Linux. Podman allows me to quickly do whatever I want with containers and I can use systemd or a simple bash script to easily create services on my workstation or in production with Nomad with https://github.com/hashicorp/nomad-driver-podman

                                                                              I am super thankful for the team of developers that work on Podman. It has really come a long way since 2.0 and they are very responsive to issues in my experiences. If you are using Linux as your daily driver and you use Containers give Podman a try. Here are some examples of the things I have done with Podman.

                                                                              https://github.com/forem/selfhost

                                                                              https://github.com/jdoss/ppngx

                                                                              https://gist.github.com/jdoss/25f9dac0a616e524f8794a89b7989e...

                                                                              https://gist.github.com/jdoss/ad87375b776178e9031685b71dbe37...

                                                                              • mekster 3 years ago
                                                                                What were the headaches?
                                                                                • skrtskrt 3 years ago
                                                                                  Not the poster, but I have to reboot at least one a day to clear up Docker networking/DNS gremlins.

                                                                                  I thought moving to Linux from Mac would make Docker better due to the lower resource usage but I would guess the fact that it’s isolated in a VM in Mac is why I never had network issues there

                                                                                  • bavell 3 years ago
                                                                                    Strange, I work with docker containers nearly every day but usually only reboot once a month.
                                                                              • iknownothow 3 years ago
                                                                                It's okay to stick with Docker if it works for us right? There's nothing fundamentally wrong with it right?

                                                                                At the moment Podman is just more work for us because I and other devs don't have years of of experience and intuitions about Podman like we have with Docker. I'd rather just focus on business problems rather than another migration.

                                                                                • raesene9 3 years ago
                                                                                  Yep Docker's fine (IMO ofc). If you're running on Linux hosts, then Docker engine is open source, free and works.
                                                                                  • jarek83 3 years ago
                                                                                    Similar feelings here. We use Docker without any issues beyond usual problems of a caliber that I guess any other tool would have.

                                                                                    I see some new live in docker desktop and I also have flawless experience on M! Mac with it. I even ignored all recent hype to ditch Docker because it became more transparent tool to my workflow, I forgot I use it.

                                                                                    • zamalek 3 years ago
                                                                                      If you're using it commercially, you are licensed right?
                                                                                    • tragictrash 3 years ago
                                                                                      OCI compatible containers are the future, docker and podman both classify as such.

                                                                                      https://opencontainers.org/

                                                                                      That being said, docker blows. Docker desktop blows more. Docker desktop on Windows blows the most. I always get stuck with a bind mount misbehaving, or some other issue that requires me to wipe the docker desktop data to fix it. Just use docker compose for simple stuff, and stay away from docker for Windows if possible.

                                                                                      • Hamcha 3 years ago
                                                                                        On the Docker for Windows note, it's not podman but after I had trouble with their "forced upgrade unless enterprise" policy (which made me update to a broken version with a known issue they didn't solve for weeks) I switched to Rancher Desktop and never looked back.

                                                                                        You get all the things (docker CLI, docker-compose, kubernetes via k3s) but it's FOSS and it doesn't feel like they're trying to shove a premium plan down your throat.

                                                                                        • astrostl 3 years ago
                                                                                          Loving Rancher Desktop here too, and even w/o making use of k3s at all. Fantastic drop-in replacement for Docker Desktop w/o the garbage.
                                                                                          • deskamess 3 years ago
                                                                                            Interesting/Great that Rancher Desktop uses WSL - not having to launch a Linux VM (albeit transparent) is nice. I still wish MS would have come up with something native.
                                                                                        • Grimburger 3 years ago
                                                                                          Given that docker modelled the OCI standard on their own software and expected everyone else to follow along, I think it would be nigh impossible for them to not be in compliance with the spec.
                                                                                          • zamalek 3 years ago
                                                                                            > blows. Docker desktop blows more. Docker desktop on Windows blows the most.

                                                                                            I see your "Docker blows on Windows" and raise you "Docker blows on M1." At least you have WSL, Apple couldn't give half a fuck (and nor could Docker). Colima has been a lifesaver, but having used WSL Docker in the past and Linux Docker recently (I now favor Podman), M1 Docker is a complete shitshow. I'm slowly infesting our codebase with Podman/Buildah/Skopeo (also because they do things Docker can't), and hopefully we'll get to the point of using podman machine.

                                                                                          • usr1106 3 years ago
                                                                                            This article is from a Windows perspective.

                                                                                            On Linux podman is significantly different from docker: It uses user namespaces. So it is much more secure (assuming that security bugs related to Linux user namespaces, which have indeed been dicovered, are still much rarer than people running untrusted container images). However, with security comes incompatibility. If the image does tricky system interaction instead of just running user space code and some standard cases like opening a socket chances are that things will not work under podman without modification.

                                                                                            • pid-1 3 years ago
                                                                                              Docker for Desktop went from being complete garbage to a really nice product.

                                                                                              I think Docker folks are heavily focused on providing great local development experiences, which is a niche few other products are covering.

                                                                                              • teruakohatu 3 years ago
                                                                                                What exactly does Docker for Desktop do? All it seems to me is a slightly annoying non-free GUI application I need to use docker cli from Windows or Mac.
                                                                                                • kristjansson 3 years ago
                                                                                                  Runs docker in a VM for you, abstracts that away, confuses the hell out of new and old developers alike.
                                                                                                  • KronisLV 3 years ago
                                                                                                    > Runs docker in a VM for you

                                                                                                    It depends:

                                                                                                      - the Hyper-V backend uses a VM for running the actual containers, which is a bit annoying because it just sits there and eats your RAM whenever it's on (technically you could enable dynamic memory for the VM, but i think it used to break)
                                                                                                      - the WSL2 backend uses the whole fancy new system that Microsoft came up with to, idk, attempt to embrace and extend Linux or something; far less annoying than Hyper-V but also has somewhat different approaches to setting resource limits (e.g. if you only wnat to give it 4 GB of RAM or 4 CPU cores so something is left for the rest of your system and doesn't slow down when you run docker build)
                                                                                                    
                                                                                                    Honestly, Docker on *nix is a way better experience, but not everyone can run it for a variety of reasons (e.g. corporate policy or having the same PC for personal development and gaming).
                                                                                                    • tasuki 3 years ago
                                                                                                      Wasn't the main selling point of docker "no more VMs"?
                                                                                                    • oogetyboogety 3 years ago
                                                                                                      It has something like a minikube k8s distribution and introduces some compatibility layer for systems without *nix hyper v or wsl
                                                                                                    • papito 3 years ago
                                                                                                      All you really need is "ctop", the "top" for Docker. You can view running and idle containers, start, stop, delete, view logs.

                                                                                                      https://github.com/bcicen/ctop

                                                                                                    • bobobob420 3 years ago
                                                                                                      docker is far far far far from dead. I frankly do not seeing it going away for a looong time because it is generally a great and well supported product. Theres lots of information on issues and fixes and tons of developers using in across many large corporations
                                                                                                      • redisman 3 years ago
                                                                                                        Agreed. It’s simple (compared to k8s) and covers most companies needs perfectly well
                                                                                                      • hiroshui 3 years ago
                                                                                                        Hello, its Maximilian from fme - the author of the linked article. I had vacation when this article blew up and now i am pretty overwhelmed of the discussion that started here!

                                                                                                        We are very happy that this discussion took place and that it sparked a nice and lively discussion about containers, Docker, Podman and all the other stuff between you and all the other professionals. We are also very grateful for all your criticism and corrections. The article is currently under review and we want to make sure to correct the previous mistakes in a transparent way. Seems like a few valid points were missed and some wrong assumptions were made. Nonetheless, I think the discussion that came out of this helped a lot of people get some useful insights into Docker, Podman, and containerization as a whole.

                                                                                                        We are trying to get all wrong information - based on your discussion - right and summarize them in the refactored article!

                                                                                                        What can we take away from this? - More research next time is necessary and we need to challenge our article.

                                                                                                        Again, thanks a lot for all your feedback! We appreciate it very much! There were a few new things that also I was able to learn in this process which is always nice.

                                                                                                        • hiroshui 3 years ago
                                                                                                          We just updated the article. Just to let you know :)

                                                                                                          Have a good one!

                                                                                                        • bdcravens 3 years ago
                                                                                                          > Podman currently only runs stably on Linux-based systems. Under Windows or MacOS it becomes a bit more demanding, although it is possible with detours.

                                                                                                          I think this is an area bearing improvement before most dev workflows can switch

                                                                                                          • mekster 3 years ago
                                                                                                            Why do you need to run docker on Windows or Mac?
                                                                                                        • pelorat 3 years ago
                                                                                                          I just use LXC, it's never failed me and has none of the hype.
                                                                                                          • j4hdufd8 3 years ago
                                                                                                            LXD is not production ready in my experience. Snap auto updates fucked up many times, for example.
                                                                                                            • EnigmaCurry 3 years ago
                                                                                                              Use LXC on Proxmox rather than LXD, very stable.
                                                                                                            • cpach 3 years ago
                                                                                                              Can you run OCI containers there?
                                                                                                              • hamilyon2 3 years ago
                                                                                                                Lxc rocks. It is linux-only, though
                                                                                                                • pxeger1 3 years ago
                                                                                                                  Containers are a Linux-only feature. Docker Desktop just runs a Linux VM on Windows and macOS.

                                                                                                                  (actually I think Windows Server has some container support now, but it's a totally different system)

                                                                                                              • mati365 3 years ago
                                                                                                                Have you ever used podman-compose? It's amount of bugs and missing features is bigger than actual features count.
                                                                                                                • jdoss 3 years ago
                                                                                                                  Podman 4.x is pretty great with docker-compose due to its API compat with Docker. Give it a shot.
                                                                                                                  • okamiueru 3 years ago
                                                                                                                    This sort of makes the whole premise confusing to me. The way to use the alternative to the "dead" product is to use the dead product.

                                                                                                                    This isn't a critique of your comment. Just, that I don't understand what's going on here. Maybe this whole issue is a non-Linux kind of thing?

                                                                                                                    Test stuff out with wither docker compose, or minikube, and otherwise deploy to k8s has worked great for me.

                                                                                                                • colordrops 3 years ago
                                                                                                                  NixOS recently switched the default from docker to podman for containers. I don't know if it's Nix's configuration, or a problem with Podman itself, but it's unusable. The systemd service often hangs, creating networks errors out, the pod concept doesn't work great, requiring tearing down the whole group of containers to change port mappings, and it acts like a completely different system depending on the user running the container (though I suppose this last bit is supposedly a feature). Why isn't the list of images global to the machine? Perhaps I just don't get it yet.
                                                                                                                  • yjftsjthsd-h 3 years ago
                                                                                                                    > Why isn't the list of images global to the machine?

                                                                                                                    Why would it be? Unless you jump through hoops, your music and photos aren't global to the machine; rootless containers just made containers fit in the traditional unix security model.

                                                                                                                    • mati365 3 years ago
                                                                                                                      It's also happening on Debian. Podman seems to be also losing quite often network firewall configuration after killing containers that were using cached images so you are not able to access internet from containers (logs say its libpodman bug)
                                                                                                                      • bob778 3 years ago
                                                                                                                        Podman always feel like software no one’s using in prod. There’s a lot of edge cases and bugs - particularly in the service control, user groups and ipv6 support
                                                                                                                      • TheAceOfHearts 3 years ago
                                                                                                                        People complaint about framework or library churn in the JS world, but other ecosystems have the same issue. For people who aren't following this ecosystem closely, I just want something that works and gets out of the way with a minimal learning curve.

                                                                                                                        Navigating fragmented ecosystems sure is a pain... I get that different tools serve different needs, but having to learn a bunch of different things just to figure out which one to use gets really exhausting. Especially when you have to do it for tools at every layer of your stack.

                                                                                                                        • olingern 3 years ago
                                                                                                                          JS is a punching bag because it’s a moving target that most everyone has to deal with at some point and pre-ES6 JS had quite a few warts. It’s a fine language now, especially with TypeScript helping to push things in the right direction.

                                                                                                                          I left .NET land for this very reason. JS pales in comparison to .NET framework fatigue

                                                                                                                        • studmuffin650 3 years ago
                                                                                                                          Lack of mention of podman machine seems like big miss when talking about podman as an alternative to Docker.
                                                                                                                          • ravenstine 3 years ago
                                                                                                                            Wouldn't Lima serve that role?

                                                                                                                            https://github.com/lima-vm/lima

                                                                                                                            If memory serves me right, it works with Podman.

                                                                                                                            • Havoc 3 years ago
                                                                                                                              Lima is mentioned in the article.
                                                                                                                              • ravenstine 3 years ago
                                                                                                                                It's mentioned as an alternative, but not as something that works tandem to Podman.
                                                                                                                          • KronisLV 3 years ago
                                                                                                                            Personally, i still find Docker to be the easiest way to get containers up and running - everything from Dockerfiles, building images (caching aside), to running them with Docker Compose, Docker Swarm or even Kubernetes with Docker as the runtime.

                                                                                                                            Why?

                                                                                                                            Docker - one of the older and most popular runtimes for OCI, with all of the tooling you might possibly want; most of the problems are known and solutions are easy to find, vs venturing "off the happy path" (not everyone has the resources to try and figure out Podman compatibility oddness)

                                                                                                                            Docker Compose - ubiquitous and perhaps the easiest way to launch a certain amount of containers on a host, be it a local development machine, or a remote server (in a single node deployment), none of the complexity of Kubernetes, no need for multiple docker run commands either

                                                                                                                            Docker Swarm - most projects out there do not need Kubernetes; personally, i'm too poor to pay for a managed control plane or host my own for a cluster; K3s and k0s are promising alternatives, but Docker Swarm also uses the Compose specification which is far easier to work with and most of the times you can effortlessly setup a docker-compose.yml based stack, to run on multiple nodes, as needed; also, in contrast to Nomad, it comes out of the box, if you have Docker installed; also, when you don't want to mess around with a Kubernetes ingress and somehow feeding certificates into it, you can instead just run your own Apache/Nginx/Caddy instance and manage it like a regular container with host ports 80/443 (setting up which might be a bit more difficult with Kubernetes, because by default you get access to ports upwards of 30000)

                                                                                                                            Kubernetes with Docker as the runtime - maybe with something like K3s, if you need relatively lightweight Kubernetes but also want to figure out what is going on with individual containers through the Docker CLI which is familiar and easy to work with, to dig down vs what something like containerd would let you do

                                                                                                                            Long story short, choose whatever is the best suited solution for your own needs and projects. Just want things to work and be pretty simple, modern technologies, hyperscalability and ecosystem be damned? Docker/Compose/Swarm. Want something with a bit more security and possibly even for running untrusted containers, with lots of scalability and projects built around the technologies? Podman/containerd/Kubernetes.

                                                                                                                            I've heard about Docker and Swarm being dead for years, yet it seems to work just fine. They even fixed the DNS weirdness on RPM distros (RHEL/Oracle Linux) in the 20.X releases i think, though personally i'm more inclined towards using the second-latest Ubuntu LTS because there's far less SELinux or other weirdness to be had (e.g. K3s clusters failing to initialize because of changes to cgroups). When it will actually die for real, i'll just use something like https://kompose.io/ to migrate over from the Compose format to Kubernetes.

                                                                                                                            Of course, none of that excuses you from having to learn Kubernetes, because that's what the industry has decided on. My approach is more akin to basing a new project on PHP 7 because you know that you don't need anything more.

                                                                                                                            On a different note, your employers asking you to setup Kubernetes and to launch Nexus, PostgreSQL and whatever else on a single node that has 8 GB of RAM, as well as run a bunch of Java services on it can be challenging to say the least, especially when the cloud is not in the cards, there are no pre-existing clusters in the org, there isn't the interest to get more resources and even if there was, then there'd also be thoughts along the lines of "why should we give this one project that many resources?" expressed. I'm slightly exaggerating, but oftentimes it can be akin to choosing to run Apache Kafka when RabbitMQ would have sufficed - someone else making the choice for you, pushing you into sub-optimal conditions and making you suffer as a result.

                                                                                                                            I recently went to Europe DevDays 2022 (https://devdays.lt/) and DevOps Pro Europe 2022 (https://devopspro.lt/) and one of the arguments expressed was along the lines of: "You should never host your own clusters, if you can. Just pay one of the big three platforms out there (AWS/GCP/Azure) to do it for you." What a crazy time to be alive, where running the full stack can be problematic and enterprise solutions are getting more and more detached from what smaller deployments and homelabs would actually need.

                                                                                                                            That said, Podman is getting closer and closer to full feature parity with Docker with every passing year and Kubernetes is also easier to run thanks to clusters like K3s/k0s/RKE and tools like Lens/k9s/Portainer/Rancher.

                                                                                                                            • lolcat_cowsay 3 years ago
                                                                                                                              I'm not switching just yet because I don't know if podman fully supports docker compose yet.
                                                                                                                            • throwawei369 3 years ago
                                                                                                                              This would all be true if podman wasn't a gimped version of docker.
                                                                                                                              • encryptluks2 3 years ago
                                                                                                                                In my experience it is quite the opposite really, a more featureful solution with much more options and safer defaults.
                                                                                                                                • bob778 3 years ago
                                                                                                                                  From using podman in prod, it seems to be lots of features but not necessarily stable or well-rounded
                                                                                                                                  • lapser 3 years ago
                                                                                                                                    Podman isn't supposed to be used in prod servers. It's for local development. It produces OCI compatible images (through Buildah), and you're supposed to use those with a proper container orchestration tool such as K8s, Nomad, Docker Swarm, or whatever else there is.
                                                                                                                              • flerp 3 years ago
                                                                                                                                Clickbait title ahoy
                                                                                                                                • nanna 3 years ago
                                                                                                                                  Wouldn't this be a good time to adopt guix (or nix) for a next generation upgrade on Docker?
                                                                                                                                  • scroot 3 years ago
                                                                                                                                    This is what I'm wondering. These are in some ways simpler systems as well, because containerization is "baked in"
                                                                                                                                  • CoolCold 3 years ago
                                                                                                                                    Article itself and the idea in general seems controversial at best for me.

                                                                                                                                    I could not find answer for myself why Docker is any close to be dead and why Podman is the thing I should use instead of Docker immediately.

                                                                                                                                    Q 1. Docker has some policy change and your company may need to pay for it - if you have > 250 persons/10 million revenue A 1: Indi/Solo devs out of scope. Enterprises probably fine with that anyways.

                                                                                                                                    Q 2. Docker has limits for pulls from Docker hub!!!! You have 100 (200 with login) downloads/single IP for 6 hours interval. A 2: It was already mentioned, switching to Podman, while using Dockerhub doesn't magically helps. Moreover, practically I find it totally fine for Indi/Solo dev. For companies, who's amount of pulls can be higher - you want and have in place your local registry anyways to ensure Business Continuity and this doesn't bother you much.

                                                                                                                                    Q 3. Running no background processes, running rootless is good because of ... A 3: On dev env (your local laptop, for example) you do not care much - your goal is ease of use. On production, running rootless rises question from me: * how you expect firewall (iptables) to be updated for port forwardings? * how you expect networks and bridges organized without root? * how you expect auto restart for container to happen on failure without supervising it? * some security advises and mitigation guides mention disabling user namespaces and was/is disabled by default in some distros https://news.ycombinator.com/item?id=28054823 - your security & system administration team may have such limits in place on production * those who care for intruder gets into container and can hijack system further use FireCracker or similar approach anyways [for production]

                                                                                                                                    So what is left in "pros" for Podman, have I missed anything?

                                                                                                                                    • lolcat_cowsay 3 years ago
                                                                                                                                      BTW there's no alternative to docker compose in podman, I've tried running my docker compose file with podman compose and it just failed outright. Currently I'm going to stick with Docker because of this alone.
                                                                                                                                      • lloydatkinson 3 years ago
                                                                                                                                        How does podman work with giving native access to resources? Like on a raspberry pi with docker you need to tell docker it has the ability to access /sys for the GPIO pins and for I2C etc. does podman have this too?
                                                                                                                                        • CottonMcKnight 3 years ago
                                                                                                                                          The first thing that happens when visiting that site is a modal overlay that forces me to interact with it before I can do anything else, so that website is what's dead, at least to me.
                                                                                                                                          • akagusu 3 years ago
                                                                                                                                            Docker is not dead, despite the attempts of Red Hat (and Google) to kill it.

                                                                                                                                            The market changed and Docker changed to stay relevant. Just that.

                                                                                                                                            • lkxijlewlf 3 years ago
                                                                                                                                              So, is Podman to Docker what LXD is to LXC, then?
                                                                                                                                              • user3939382 3 years ago
                                                                                                                                                Does Podman work with ECR/ECS etc the way Docker does?
                                                                                                                                              • js4ever 3 years ago
                                                                                                                                                • pjmlp 3 years ago
                                                                                                                                                  Then there is very little GNU/Linux left to use.
                                                                                                                                                  • matyasrichter 3 years ago
                                                                                                                                                    Ok.