The Podman Desktop community has been growing and making steady progress over the past six months as we prepare for the 1.0 release later this year. Recent releases have delivered improvements in areas like user experience, documentation, expanded support for developer tooling, and a number of new extensions that enable integration with third-party tools.
This work serves an important purpose. Software development today is hard. Systems are complex, and the reality is that development involves much more than writing code. Developers need a thorough understanding of resources, integration, orchestration and more. Not having a seamless path to go from the local development of a software service all the way to production in an orchestrated system can be a significant burden.
Podman Desktop exists to alleviate that burden, abstracting away the complexity and enabling developers to more easily interact with containers and pods running in Podman using a graphical user interface (GUI) to install, configure and update their container engine.
In short, it offers a path to go from applications to containers to pods to full-blown Kubernetes within one seamless workflow, or as my colleague Ian Lawson recently put it in his getting started guide, “Podman Desktop really eases the pain of building images and hosting containers locally.”
In theory, containers provide a consistent environment for development and production. When a developer works with containers locally, they know that the application is running in the same environment that it will be deployed to in production. This reduces the likelihood of environment-related issues, such as dependency conflicts or configuration mismatches. Practically speaking, this is not always true. Especially when it comes to security considerations, local container orchestration, and other more specific features, it can get quite complicated quickly.
To become a highly portable and hybrid carrier, developers need to be sure that an application developed locally in a container can be easily moved to different environments, such as staging, testing, or production. This reduces the amount of time and effort required to deploy an application, as developers can use the same container image across different environments. To savor these advantages it is especially important for application developers to have an easy-to-use environment that not only takes the burden of packaging and configuring the applications off their shoulders but also helps the local setup to be more seamlessly executed in a cloud environment. This way developers can focus on what’s most important: the application code.
While software development lifecycles are well defined and always start with source code, the further steps heavily depend on the necessities of the individual organization and its processes. Some might prefer using specific cloud services for testing, while others rely on internal staging environments or various cloud hosted offerings. The extension API in Podman Desktop supports not only the creation of custom extensions but also helps foster an open ecosystem that empowers community and partners to plug further functionality into Podman Desktop and become part of the open source innovation engine.
Running individual containers locally can help with testing; however, they rarely come alone in real-world projects. Most applications packaged in containers rely on databases, messaging infrastructure, or other downstream dependencies. Testing the container orchestration locally is equally important to developers as it enables them to not only quickly spin up dependencies but run quick tests against them before GitOps processes take over. The ultimate goal for developers is to start with Kubernetes configurations locally and stage them over to production. While Podman Desktop helps with one-click YAML generation for containers, we recognize that there still is a legacy of Compose based configurations out there. To make the transition to Kubernetes easier, Podman Desktop now enables developers to use the Compose spec to run many containers at the same time. Podman Compose requires a Compose YAML file with definitions about the containers that need to communicate. This is a step towards directly working with production-ready Kubernetes manifests locally.
Podman Desktop is gaining momentum, and we are excited about the road ahead. You can learn more about the project and download it at https://podman-desktop.io. If you’re new to Podman Desktop, I’d encourage you to read “What is Podman Desktop? A developer's introduction” on the Red Hat Developer blog.
About the author
Markus Eisele is a Red Hat Developer Tools Marketing Lead at Red Hat. He is also a JavaTM Champion, former Java EE Expert Group member, founder of German JavaLand and a speaker at Java conferences around the world.