Docker is dead? Podman – an alternative tool?
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.<p>Why?<p>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 &quot;off the happy path&quot; (not everyone has the resources to try and figure out Podman compatibility oddness)<p>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<p>Docker Swarm - most projects out there do not need Kubernetes; personally, i&#x27;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&#x27;t want to mess around with a Kubernetes ingress and somehow feeding certificates into it, you can instead just run your own Apache&#x2F;Nginx&#x2F;Caddy instance and manage it like a regular container with host ports 80&#x2F;443 (setting up which might be a bit more difficult with Kubernetes, because by default you get access to ports upwards of 30000)<p>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<p>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&#x2F;Compose&#x2F;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&#x2F;containerd&#x2F;Kubernetes.<p>I&#x27;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&#x2F;Oracle Linux) in the 20.X releases i think, though personally i&#x27;m more inclined towards using the second-latest Ubuntu LTS because there&#x27;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&#x27;ll just use something like <a href="https:&#x2F;&#x2F;kompose.io&#x2F;" rel="nofollow">https:&#x2F;&#x2F;kompose.io&#x2F;</a> to migrate over from the Compose format to Kubernetes.<p>Of course, none of that excuses you from having to learn Kubernetes, because that&#x27;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&#x27;t need anything more.<p>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&#x27;t the interest to get more resources and even if there was, then there&#x27;d also be thoughts along the lines of &quot;why should we give this one project that many resources?&quot; expressed. I&#x27;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.<p>I recently went to Europe DevDays 2022 (<a href="https:&#x2F;&#x2F;devdays.lt&#x2F;" rel="nofollow">https:&#x2F;&#x2F;devdays.lt&#x2F;</a>) and DevOps Pro Europe 2022 (<a href="https:&#x2F;&#x2F;devopspro.lt&#x2F;" rel="nofollow">https:&#x2F;&#x2F;devopspro.lt&#x2F;</a>) and one of the arguments expressed was along the lines of: &quot;You should never host your own clusters, if you can. Just pay one of the big three platforms out there (AWS&#x2F;GCP&#x2F;Azure) to do it for you.&quot; 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.<p>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&#x2F;k0s&#x2F;RKE and tools like Lens&#x2F;k9s&#x2F;Portainer&#x2F;Rancher.