Skip to main content

36 posts tagged with "podman-desktop"

View All Tags

Using CNCF projects with Podman Desktop

· 3 min read
Charlie Drage
Software Engineer

plane

Podman Desktop serves as a powerful tool for managing and visualizing cloud-native applications and can interact seamlessly with a range of CNCF (Cloud Native Computing Foundation) projects.

It's an accessible platform for developers working with single-container applications, multi-container configurations with Compose files, and complex, distributed applications on Kubernetes clusters.

Key features of Podman Desktop for CNCF projects

Podman Desktop brings together three powerful features for managing small to large-scale projects:

  • Container Management: Supports creating, running, and monitoring containers.
  • Compose Support: Allows you to deploy applications defined in Compose files. This is particularly useful for managing applications that require multiple services, such as web servers, databases, and caches.
  • Kubernetes Integration: Offers tools to manage multi-node Kubernetes clusters, making it ideal for handling more complex distributed applications that need orchestration across several pods and services. You can setup your own development cluster with Podman Desktop using our Minikube or Kind extensions.

Minikube

Minikube is a local Kubernetes development cluster which allows for an easy way to learn and develop for Kubernetes.

Minikube can be seamlessly integrated with Podman Desktop, enabling Kubernetes development workflows within Podman’s environment. This is made possible by installing the Minikube extension, which allows creating, managing, and deploying clusters directly from the Podman Desktop.

The following video provides a complete guide from installation to cluster creation:

Backstage

Backstage is an open-source platform for building developer portals, designed by Spotify. It empowers engineering teams to create customized, centralized hubs for managing and documenting their services, applications, and infrastructure. Backstage’s extensible architecture includes features for cataloging software components, organizing documentation, managing cloud resources, and tracking workflows.

A popular method for deploying Backstage is through a Helm chart. Once deployed, you can view Backstage’s services in the Kubernetes Dashboard to monitor components and ensure proper configuration:

backstage services

You can also access your deployed Backstage instance by using Podman Desktop's port forwarding feature. This feature allows you to securely forward a local port to the Backstage service running on your Kubernetes cluster, making it easy to access the instance from a local browser.

backstage port forward

Dapr

Dapr (Distributed Application Runtime) is an open-source, event-driven runtime designed to help developers build resilient, stateless, and stateful applications that can run seamlessly on cloud or edge environments.

Dapr abstracts the complexities of distributed systems, offering building blocks for service invocation, state management, publish/subscribe messaging, and resource bindings, which simplify the development of microservices and cloud-native applications.

Dapr can be deployed in a local environment using Podman by following their self-hosted podman setup.

To initialize Dapr with Podman after installing the Dapr CLI, execute the following command:

$ dapr init --container-runtime podman

Once initialized, you can manage and interact with Dapr directly within Podman Desktop:

dapr

Additionally, Podman Desktop provides a "Launch Browser" button, allowing quick and convenient access to the Dapr UI for monitoring and management:

dapr browser

Conclusion

Whether you’re managing Kubernetes clusters, harnessing the power of Backstage for developer portals, or deploying microservices with Dapr, Podman Desktop provides a unified environment to streamline your workflows.

Check out the list of graduate and incubating projects to discover even more possibilities with Podman Desktop.

Podman Desktop 1.15 Release

· 9 min read
Axel Stefanini
Software Engineer

Podman Desktop 1.15 Release! 🎉

podman-desktop-hero-1.15

Podman Desktop 1.15 is now available! Click here to download it!

This release brings exciting new features and improvements:

  • Improved Feedback Form: Redesigned for seamless issue reporting to GitHub 🪲.
  • New Experimental Task Manager: A revamped task manager is now available for testing 🔔.
  • Enhanced Kubernetes Events: Added support for events on resources like Nodes, Services, and Pods 📜.
  • SSH Access to Podman Machine: Directly connect to your Podman machine from Podman Desktop.

Release Details 🔍

Improved Feedback Form 📝

In the 1.15 release, we introduced a redesigned feedback form to streamline issue reporting. With our growing user base, it’s vital to provide a convenient way to submit feedback directly to GitHub via our main repository: podman-desktop/podman-desktop/issues.

While retaining our internal anonymous feedback system, this update also enables users to preview their issues on GitHub, ensuring better communication.

Feedback FormFeedback Form

Feedback Categories

We now offer three distinct feedback categories:

  • Direct your words to the developers: Keeps feedback anonymous, visible only to our team.
  • Feature Request: Redirects users to GitHub to suggest new features.
  • Bug: Allows users to report bugs directly on GitHub.
Feedback categoriesFeedback categories

Experimental Task Manager 🔔

Back in the 0.13 release, we introduced the Task Manager. With an increasing number of long-running tasks, we’ve revamped it to improve usability. This updated version is available as an experimental feature!

Enabling the Experimental Task Manager

To try it out, go to Settings > Preferences > Tasks and enable the Manager option.

task manager experimental preferencetask manager experimental preference

What’s New?

Key changes include:

  • Enhanced usage of available screen width.
  • Improved consistency across the application.
  • Additional capabilities for managing individual tasks.
task manager experimental preferencetask manager experimental preference

Kubernetes Events 📜

This year, we’ve been steadily adding Kubernetes capabilities to Podman Desktop. While this effort is ongoing, version 1.15 introduces support for Kubernetes Events. These events are now available for resources like Nodes, Services, and Pods.

task manager experimental preferencetask manager experimental preference

SSH Access to Podman Machine

A frequent user request has been the ability to establish an SSH connection to a Podman machine for debugging or configuration purposes. In this release, you can now directly connect to your Podman machine from its details page.

task manager experimental preferencetask manager experimental preference

Community thank you

🎉 We’d like to say a big thank you to everyone who helped to make Podman Desktop even better. In this release, we received pull requests from the following people:


Final notes

Fixed issues

The complete list of issues fixed in this release is available here.

Where to download

Get the latest release from the Downloads section of the website and boost your development journey with Podman Desktop. Additionally, visit the GitHub repository and see how you can help us make Podman Desktop better.


Detailed release changelog

Documentations 📚

  • docs(website): edited the doc to provide clarity in using the libkrun… by @shipsing in #10111
  • docs(website): edited the managing objects section by @shipsing in #9845
  • docs(website): fix mac gpu container base by @sozercan in #10082
  • docs(website): highlighted port forwarding through UI by @shipsing in #10006
  • docs(website): presented the info in procedural format by @shipsing in #9972
  • docs(website): updated the docker compatibility section by @shipsing in #9408
  • docs(website): updated the troubleshooting section by @shipsing in #9918
  • docs(website): updates the outdated procedure by @shipsing in #10090
  • docs(website):Added a reference section for PD extensions by @shipsing in #9607
  • docs(website):Added a troubleshooting section for setting up PD on Wi… by @shipsing in #9894
  • docs(website):added a blog about building a kubernetes application by @shipsing in #9780
  • docs: 1.14.0 release notes by @gastoner in #9628
  • docs: add microshift podman desktop example blog by @cdrage in #9031
  • docs: add section about draft PR by @benoitf in #9965
  • docs: blog post on AI Lab recipes by @feloy in #9856
  • docs: fix syntax in CONTRIBUTING by @Blaimi in #9925
  • docs: update extension landing page on index by @cdrage in #9812
  • docs: update release template lowercase headers by @cdrage in #9703

Feature 💡

  • feat(extensions/kind): update projectcontour to v1.30.1 by @Blaimi in #9927
  • feat(feedback): add enabled extensions in additional-context by @axel7083 in #10276
  • feat(feedback): adding frontend checkbox to include system info by @axel7083 in #10116
  • feat(feedback): adding support to get sys info by @axel7083 in #10098
  • feat: add a bug report feedback form by @SoniaSandler in #9833
  • feat: add a feature request feedback form by @SoniaSandler in #9955
  • feat: add a way to clean logs in container's log page by @benoitf in #9528
  • feat: add category field to feedback by @feloy in #9761
  • feat: add error visual indicator in typeahead component by @gastoner in #9782
  • feat: add error visual indicator pull image input by @gastoner in #9899
  • feat: add new task manager by @benoitf in #10206
  • feat: allow for extensions to navigate to an onboarding screen by @benoitf in #9759
  • feat: allow to cancel a task from the status bar by @benoitf in #10209
  • feat: allow to cancel a task that is cancellable by @benoitf in #10100
  • feat: check connectivity with health check by @feloy in #10076
  • feat: check permissions on resources by @feloy in #10133
  • feat: collect Service events by @feloy in #9692
  • feat: display 3rd party contribution to Docker Compatibility page by @benoitf in #9777
  • feat: display a warning when there is no latest tag for image to pull by @feloy in #9757
  • feat: display nodes events by @feloy in #9691
  • feat: display services events by @feloy in #9733
  • feat: force use of libPod if nvidia device requested by @mhdawson in #10251
  • feat: implement dropdown menu for status bar help button by @dgolovin in #9867
  • feat: improve libpod API support - translate selinux_opts by @mhdawson in #10178
  • feat: improve libpod support - translate devices by @mhdawson in #10180
  • feat: introduce an hidden option kubernetes.statesExperimental by @feloy in #10018
  • feat: move NumberInput to svelte-ui by @feloy in #9872
  • feat: port-forward on deployments by @feloy in #9946
  • feat: provide ability to easily get a shell in a machine - render part by @gastoner in #9381
  • feat: publish the catalog to the website in /extensions directory by @benoitf in #9804
  • feat: show message box on close of feedback form by @gastoner in #9975
  • feat: update to podman v5.3.1 by @benoitf in #9882

Fixes 🔨

  • fix(CliToolRegistry): notify on register install or update by @axel7083 in #9813
  • fix(ci): exclude podman-remote e2e tests from running as part all tests suite by @odockal in #9982
  • fix(extensions/kind): adjust contour download script for new octokit version by @Blaimi in #9926
  • fix(k8s-port-forward): delete config if start fails by @axel7083 in #9874
  • fix(k8s-port-forward): delete config if start fails by @axel7083 in #9888
  • fix(monaco): make vscode focus border transparent by @axel7083 in #10053
  • fix(status-bar): progress should be indeterminate when task is indeterminate by @axel7083 in #9941
  • fix(ui): better handle errors on KubePort component by @axel7083 in #9876
  • fix(ui): round display progress value by @axel7083 in #10031
  • fix: a containerfile outside context can be used when building image by @feloy in #9910
  • fix: add light mode color to toast text by @SoniaSandler in #9915
  • fix: added questionmark by @gastoner in #9814
  • fix: apply 0/0 as uid/gid when sending the tar as build context by @benoitf in #10282
  • fix: cache pod exec websockets by @jeffmaury in #10165
  • fix: compose installation via onboarding and cli tools by @dgolovin in #10148
  • fix: create new connection form dropdown FormData by @SoniaSandler in #9708
  • fix: creating hyperv machine in airgap now does not try to use wsl image by @gastoner in #9715
  • fix: do console logging only if app is not quitting by @SoniaSandler in #10064
  • fix: do not try to monitor machine when autostarting it by @benoitf in #10308
  • fix: ensure system path is created and show notification if not in PATH by @jeffmaury in #10176
  • fix: flaky test waitForPodsDeletion by @feloy in #9875
  • fix: handle promise result by @jeffmaury in #9700
  • fix: improve libpod API translation - extension by @mhdawson in #10179
  • fix: navigation url to use summary by @axel7083 in #9696
  • fix: proxy settings do not take effect when switched to system or disabled by @jeffmaury in #10062
  • fix: rely on configurationValues if it has the key value by @lstocchi in #9951
  • fix: remove extra border in details page by @axel7083 in #10050
  • fix: remove nullable detailsPage binding by @axel7083 in #9788
  • fix: restart container on terminal page by @feloy in #9796
  • fix: skip filesystem flaky test by @axel7083 in #10075
  • fix: sort array of image names, move matches on top by @dgolovin in #9831
  • fix: start secondary informers for current context only by @feloy in #9735
  • fix: status bar progress bar percentage display by @axel7083 in #9791
  • fix: stub every missing function in renderer package tests by @dgolovin in #9773
  • fix: table component should be scoped when searching items by @benoitf in #10211
  • fix: terminal is not restarted if container if not running + state management by @feloy in #9793
  • fix: test:renderer test failure by @jeffmaury in #10264
  • fix: tty when container run with it options by @feloy in #9745
  • fix: update Kubernetes context watchers messages by @jeffmaury in #10017
  • fix: use utf16le ecoding in powershell call for Virtual Machine Platform detection by @dgolovin in #9594
  • fix: use correct header for play kube operation by @benoitf in #10036
  • fix: visibility of docker compatibility settings by @gastoner in #10241
  • fix: watch /var/run/docker.sock on macOS by @dgolovin in #9714
  • fix: workaround of LIMA_HOME usage by @tony-sol in #10086
  • fix: wrong pnpm-lock file by @feloy in #9754

Podman AI Lab - For developers to build AI Applications with LLMs running locally

· 9 min read
Philippe Martin
Principal Software Engineer

banner

Red Hat provides an extension to Podman Desktop, Podman AI Lab, which lets developers discover examples of applications by using large language models (LLMs), and gives them a framework to create their own AI-based applications and share them with their team.

We will discover, through this article, the different steps to create our first AI application, and to add it to the catalog of recipes of Podman AI Lab.

For our first experiment, we will work on a micro-service for the podman-desktop.io website. The micro-service would receive the search terms from the website, and would ask the model to find the best matching pages, before returning the result to the website.

my first app

Preparing Podman Desktop and Podman AI Lab

If you haven't done it yet, first install Podman Desktop and its extension Podman AI Lab.

To have a better experience, it is recommended to use the GPU acceleration to serve the model. If you have such a GPU on your machine, you will need to create a Podman machine with the LibKrun provider (on MacOS). More details on the GPU support for Podman AI Lab.

At the time of writing, the GPU support is still experimental on Podman AI Lab. You will need to enable the option on the Preferences to enable it.

a podman machine running using libkrun

GPU support for inference servers preference is enabled

Testing a prompt with a model

Podman AI Lab provides a catalog of open source models that can be used locally. You can go to the Models > Catalog page to download the model of your choice. For this article, we will use the Mistral-7B-instruct model.

Mistral model is downloaded

Once a model is downloaded, we can test and interact with this model to try to find the best prompt for our application. For chat models, Podman AI Lab provides a Playground, so we can test different prompts and validate that the responses of the model are adequate.

Let's start a new playground (from the Models > Playgrounds menu), and send our first prompt:

Give me a list of pages in the website podman-desktop.io related to "build an image"

The model should reply with some list of pages, in a human-readable form (see the screenshot below, for the response we received).

a first prompt with human-readable output

The problem is that the response is in human-readable form, but we don't want the API to return this response as is. We want to have the name and the url of the pages, and send them to the website, so the website can display these pages with its preferred format.

For this, we can try to ask the model to reply with a structured response, with the following prompt:

Give me a list of pages in the website podman-desktop.io related to "build an image" as JSON output as an array of objects with 2 fields name and url

This time, we received a response in JSON format, which is more suitable for our needs.

a prompt with structured output

We don't expect the user to ask such a precise question, and we would prefer to send to the model the exact question of the user, without modifying it in real time. To achieve this, chat models provide a system prompt feature. The system prompt can be defined at the beginning of the chat session.

Podman AI Lab supports this feature, let's restart a Playground session with the following system prompt:

Give me a list of pages in the website podman-desktop.io related to the request as JSON output as an array of objects with 2 fields name and url

Then, send the prompt build an image, to simulate a realistic search input of a user.

We can see in the screenshot below that the model still returns a response suitable for our use case.

a session with a system prompt

Please note that this section was not a course on writing the best prompt, I'm sure you will find much more efficient prompts for this purpose. The purpose of this section is to demonstrate how you can iterate with Podman AI Lab to refine the prompts you want to use for your application.

Testing a recipe

Now that we have a suitable prompt to use for our application, it is time to start our application itself.

Many developers prefer to have a working example of application to start with, and Podman AI Lab provides such examples with a catalog of recipes, visible in the page AI Apps > Recipe Catalog.

Let's select the Chatbot recipe (More details link on the Chatbot card), and start it with the Mistral model (by pressing the Start button and filling the form).

Once the application is started, we can access the list of running apps in the AI Apps > Running page, and we can access the app's UI by clicking on the Open AI App link.

We can test again by typing our prompt (not the one with a system prompt, as the recipe does not support providing a system prompt), and see that the response is very similar to the one received from the playground.

a session on the Chatbot recipe

Back to the recipe's details page, we can access the sources of the recipe by clicking on the Open in VSCode button, the respository's link or the link Local clone.

Structure of a recipe

The entrypoint of a recipe is the file ai-lab.yaml present in the repository of the recipe.

Let's examine the content of this file (the syntax of the file is specified in this documentation) for the chatbot example.

version: v1.0
application:
type: language
name: ChatBot_Streamlit
description: Chat with a model service in a web frontend.
containers:
- name: llamacpp-server
contextdir: ../../../model_servers/llamacpp_python
containerfile: ./base/Containerfile
model-service: true
backend:
- llama-cpp
arch:
- arm64
- amd64
ports:
- 8001
image: quay.io/ai-lab/llamacpp_python:latest
- name: streamlit-chat-app
contextdir: app
containerfile: Containerfile
arch:
- arm64
- amd64
ports:
- 8501
image: quay.io/ai-lab/chatbot:latest

The file defines two containers, one for the inference server and one for the application itself.

The first container, for the inference server, is generic and can be reused for any app using a chat model.

The second one is the one we are particularly interested in. It defines how the container's image for the application is built. It points to the Containerfile used to build the image, on which we can find the source code for the app: in the app/chatbot_ui.py file.

Looking at the Python source file, we can see that the application uses the streamlit framework for the UI part, and the langchain framework for discussing with the model.

We can adapt this source code, by replacing the UI part with a framework to make the app a REST service, and keep the langchain part.

An interesting part of the source code is that the recipe does not expose to the user the system prompt, but defines one internally (You are world class technical advisor):

prompt = ChatPromptTemplate.from_messages([
("system", "You are world class technical advisor."),
MessagesPlaceholder(variable_name="history"),
("user", "{input}")
])

This is exactly what we want to do in our application, we will be able to indicate here the system prompt we have found earlier.

Creating our own app

Adapting the source code for the purpose of our application is out of the scope of this article, let's see the result in our app repository.

As discussed in the previous section, we have replaced the streamlit part with the flask framework to create a REST API with two endpoints: one for the health check on / necessary for Podman AI Lab, and another one on /query, which will be the endpoint on which the micro-service's user will send requests.

We have also indicated our own system prompt:

prompt = ChatPromptTemplate.from_messages([
("system", """
reply in JSON format with an array of objects with 2 fields name and url
(and with no more text than the JSON output),
with a list of pages in the website https://www.podman-desktop.io related to my query
"""),
MessagesPlaceholder(variable_name="history"),
("user", "{input}")
])

Testing my own app locally

To iterate during the development of our app, we can test our app locally in our host system, while using the model served by Podman AI Lab. For this, we need to start a new model service from the page Models > Services, by clicking the New Model Service, then choosing the appropriate model (Mistral-7B-instruct in our case), and specifying a port number (let's say 56625).

a running inference server with Mistral model

Then, we can run our app, by specifying through the MODEL_ENDPOINT environment variable how to access the model service.

my app running locally

Finally, we can send a request to this app running locally, and listening in the port 5000, and we can check in the screenshot below that the response is, as expected, a list of pages (name and url) in JSON format:

a request to the micro-service

Creating a recipe

The last step is to add this application to the Podman AI Lab recipe catalog.

Podman AI Lab provides a way for a user to extend the provided catalog with its own recipes. This can be done by adding a file in a specific directory, as described in this documentation.

{
"version": "1.0",
"recipes": [
{
"id": "search-podman-desktop-io",
"description" : "Search on Podman-desktop.io website",
"name" : "Search Podman-desktop.io",
"repository": "https://github.com/redhat-developer/podman-desktop-demo",
"ref": "main",
"icon": "natural-language-processing",
"categories": [
"natural-language-processing"
],
"basedir": "ai-lab-demo/recipe",
"readme": "",
"recommended": [
"hf.TheBloke.mistral-7b-instruct-v0.2.Q4_K_M"
],
"backend": "llama-cpp"
}
]
}

By creating the file $HOME/.local/share/containers/podman-desktop/extensions-storage/redhat.ai-lab/user-catalog.json with the content above, you should now be able to see a new recipe Search Podman-desktop.io in the recipe catalog of Podman AI Lab, and run it as any other recipe. And, of course, you can share this file with your colleagues to share with them your latest experiment.

Podman Desktop + CNCF - Community Driven Move

· 5 min read
Markus Eisele
Product Marketing
Stevan Le Meur
Product Manager

banner

Today, we're thrilled to announce our application for Podman Desktop to join the Cloud Native Computing Foundation (CNCF) as a Sandbox project.This is a huge milestone for our project and our community, and we're incredibly excited for what the future holds.

About Podman Desktop

Podman Desktop builds upon the innovations brought by Podman, offering a powerful yet user-friendly environment for containerized development. Podman provides a daemonless, rootless container engine that enhances security and flexibility, while Podman Desktop delivers an intuitive graphical interface for managing containers and interacting with Kubernetes. Enhanced by a plug-in system that allows developers to customize their inner loop container workflows to their needs and offers flexible extension points for other projects as well as other container engines.

Why the CNCF?

The CNCF is a vital organization for the cloud-native world, supporting collaboration and driving innovation for critical projects like Kubernetes, Prometheus, and Envoy. As a CNCF project, Podman Desktop will benefit from increased visibility, a neutral home for open governance, and access to a wealth of resources and expertise. CNCF projects will take a renewed interest in collaborating with us. This move will help us grow our community, ensure the project's long-term sustainability, and accelerate its development.

How Podman Desktop simplifies containers and Kubernetes

Developing with containers can be complex. Podman Desktop simplifies this by providing an intuitive interface and powerful tools for building, managing, and running containers. This allows developers to focus on writing code, not wrestling with infrastructure. Why is this important? Because in today's complex world, developer productivity is paramount. By removing friction and simplifying workflows, Podman Desktop empowers developers to deliver value faster. Podman Desktop enables developers to run Kubernetes locally, mirroring their production environment. This eliminates the "works on my machine" problem and allows for early detection of configuration issues. By closing the gap between development and production, Podman Desktop reduces deployment risks and accelerates the feedback loop. This leads to higher quality software and faster release cycles.

Open source and the CNCF: A perfect match for developer tools

We believe in the power of open source. Open source software fosters transparency, encourages collaboration, and drives innovation. By donating Podman Desktop to the CNCF, we're ensuring it remains open and accessible to all, fostering a vibrant community around it. The CNCF is the perfect home for Podman Desktop because it champions open source values and provides a neutral ground for collaborative development. This ensures that Podman Desktop remains vendor-neutral and driven by the needs of its users, keeping options open and avoiding vendor lock-in.

Furthermore, while the CNCF has fostered incredible innovation and many developers profit from the number of projects available through the CNCF, there's a recognized need for more developer-focused tooling. Podman Desktop fills this gap perfectly by providing a developer-centric, streamlined, and intuitive experience for containerizing, managing, and deploying cloud-native applications. Podman Desktop has a natural affinity to Kubernetes due to its design and features that seamlessly bridge the gap between local container development and Kubernetes deployments. This close relationship aligns perfectly with the CNCF's mission to drive the adoption of cloud-native technologies.

Join the growing Podman Desktop community

As a CNCF project, we have the opportunity to open our doors to a wider community of contributors and users. We believe that open source thrives on collaboration and diverse perspectives. By broadening our contributor base, we can accelerate innovation, improve the quality of Podman Desktop, and ensure it meets the needs of a diverse range of users.

You can contribute in various ways:

  • Reporting issues: If you encounter bugs or have suggestions for improvements, you can report them on the GitHub issue tracker. Be sure to provide detailed information and steps to reproduce the issue.

  • Working on issues: You can browse the issue tracker and contribute by fixing bugs or implementing new features. This involves forking the repository, making changes, and submitting pull requests.

  • Contributing code: Beyond addressing existing issues, you can propose and contribute entirely new features or enhancements to Podman Desktop's functionality, user interface, or integrations with other tools. Learn more about how to contribute.

  • Contributing plug-ins: Feel like there is an integration missing? You can contribute your own plug-in functionality for Podman Desktop. Check out the guide.

  • Improving documentation: Clear and comprehensive documentation is essential. You can contribute by improving existing documentation, adding new guides, or creating tutorials.

  • Providing website contributions: The Podman Desktop website is also open source. You can contribute to its content, design, or translations.

  • Becoming an Adopter: If you are a happy user, we’d love to know and share the word. Consider adding yourself or your organization to the list of adopters with a pull request.

Before you start contributing, it's helpful to familiarize yourself with the project's contribution guidelines and code architecture. These resources provide valuable information on coding style, testing procedures, and the overall development process. You can also join #podman-desktop on the Kubernetes Slack to connect with other contributors and get help.

KubeCon 2024 and beyond

We are at KubeCon NA 2024 in Salt Lake, to officially announce this exciting news and share more about Podman Desktop and our roadmap. Stop by the Red Hat booth to say hello, contribute to the project, and help us shape the future of cloud-native development.

Get involved and learn more

We're incredibly excited about this new chapter for Podman Desktop and can't wait to see what we can achieve together with the CNCF community.

Creating a MicroShift bootable image with Podman Desktop

· 7 min read
Charlie Drage
Software Engineer

banner

If you're unfamiliar with BootC, it offers an impressive method for deploying applications directly to bare metal from either a single Containerfile or a pre-existing bootc-supported image.

A "bootable" image, known as a BootC container image, allows you to use a simple container image to create a full bootable operating system, whether it's a raw virtual machine image or an iso for USB installation!

This capability is ideal for a variety of uses, from a simple HTTP server to an OS powering a full-stack application.

In this tutorial, we'll deploy an OpenShift derivative called MicroShift, an edge-optimized version of OpenShift designed for single-node setups on resource-constrained configurations. Think of it as a compact version of OpenShift!

This entire process is carried out using a single Containerfile (or Dockerfile).

Requirements

Before starting the tutorial, ensure you have:

Building the BootC container image

First, we'll build the initial BootC container image from which we'll later create a bootable OS.

Logging into Red Hat registry

Before proceeding, download the Red Hat Authentication extension from the catalog to enable access to Red Hat registries:

red hat login

Then log into your account:

red hat login sign in

Download your OpenShift Hybrid Cloud pull secret

Download your pull secret.

This is downloaded as pull-secret.txt. Put it in a secure location.

Creating the Containerfile (or Dockerfile)

The Containerfile is crucial for creating the bootable image.

It's important to note that we will be providing one argument during the build and that is the PASSWORD in order to access the Virtual Machine that will be logged in via the redhat username.

We will be using the Containerfile from the MicroShift image mode GitHub documentation.

Copy the Containerfile from the above link to a new file which we will be building with Podman Desktop:

$ curl https://raw.githubusercontent.com/openshift/microshift/main/docs/config/Containerfile.bootc-rhel9 -o Containerfile

Build with Podman Desktop

Select the Containerfile and build it within Podman Desktop.

You will need to provide:

  • A password for the redhat user that will be created in the Containerfile.

Pass the argument as USER_PASSWD in the build page arguments.

build

Build the bootable image with BootC Podman Desktop extension

Install

Install the BootC Podman Desktop extension from the extensions catalog:

install

Build the image

Now, create the bootable image from our container image!

Click the new BootC icon on the navigation bar and go to build:

build_button

Once the build is complete, you'll see a confirmation on the dashboard.

Next, select the image we built and choose an appropriate output format for testing the bootable image. RAW is a common choice for local testing with QEMU and other VM software like libvirt.

Testing the image

Explore various ways to test your image, using local software or cloud platforms. Here are some common steps for using the RAW output bootable image.

Running the Virtual Machine

This guide doesn't cover all methods for running a virtual machine, but here are the most common:

When using Hyper-V, create a .vhd image with BootC:

  1. When building, select the .vhd option.
  2. Install Hyper-V
  3. Import the virtual machine

Configuring and verifying MicroShift

After you boot your virtual machine, you can now configure MicroShift as well as verify the connection.

Copying over the OpenShift pull secret

Before proceeding with verifying OpenShift, the OpenShift pull secret must be copied over so that MicroShift can download Red Hat registry-authenticated container images.

Below we will copy the OpenShift secret you had previously downloaded to the virtual machine.

  1. Download your OpenShift pull secret which is downloaded as pull-secret.txt

  2. Use scp to copy over to the virtual machine:

$ scp -P 2222 pull-secret.txt redhat@localhost:~/
  1. SSH into the VM:
$ ssh redhat@localhost -p 2222
  1. Move the secret to /etc/crio/openshift-pull-secret:
$ sudo mv pull-secret.txt /etc/crio/openshift-pull-secret
  1. Restart the microshift service:
$ sudo systemctl restart microshift

Listing pods

Below we will SSH into the virtual machine and confirm that MicroShift is deploying Pods correctly:

  1. SSH into the VM:
$ ssh redhat@localhost -p 2222
  1. Copy the generated kubeconfig file to ~/.kube/config:
$ mkdir -p ~/.kube
$ sudo cp /var/lib/microshift/resources/kubeadmin/kubeconfig ~/.kube/config
$ sudo chown redhat ~/.kube/config
  1. Verify Pods are running by using oc or kubectl:
$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system csi-snapshot-controller-856bb8b9bc-9n7lj 1/1 Running 1 3d23h
kube-system csi-snapshot-webhook-7c64d4d4d7-98v6l 1/1 Running 1 3d23h
openshift-dns dns-default-n2td4 2/2 Running 2 3d23h
openshift-dns node-resolver-7cslg 1/1 Running 1 3d23h
openshift-ingress router-default-7cbc67954b-nqqc6 1/1 Running 1 3d23h
openshift-ovn-kubernetes ovnkube-master-zcqw5 4/4 Running 5 3d23h
openshift-ovn-kubernetes ovnkube-node-crnn9 1/1 Running 2 3d23h
openshift-service-ca service-ca-6799f567-k7lsc 1/1 Running 1 3d23h

Using Podman Desktop to verify MicroShift

Alternatively, you can copy the MicroShift configuration file to your local machine and test it remotely on Podman Desktop.

  1. On your local machine, create the .kube directory if it does not exist already:
$ mkdir ~/.kube
  1. Copy the remote kubeconfig file to a local configuration file:

Within MicroShift, a kubeconfig file is automatically created at /var/lib/microshift/resources/kubeadmin/kubeconfig.

Copy the file over to your local system:

scp -P 2222 redhat@localhost:/var/lib/microshift/resources/kubeadmin/kubeconfig ~/config

If you already have a ~/.kube/config, copy the contents of config to the ~/.kube/config file.

  1. Use Podman Desktop to verify the MicroShift cluster:

Podman Desktop will automatically detect your .kube/config file.

Note: You may need to modify your .kube/config file to reflect the correct domain or IP address of your cluster.

cluster

Storage configuration

By default, storage configuration requires an LVM partition and LVMS storage manager will not be deployed. This is due to a limitation when building a RAW image. An alternative non-local storage solution is required to use OpenShift artifacts with storage capabilities. The feature to add LVM support is tracked in this pull request.

Conclusion

This tutorial provided a step-by-step guide on deploying a bootable MicroShift image using Podman Desktop and the BootC extension. By leveraging tools such as BootC and Podman, we've streamlined the process of creating a lightweight, yet fully functional, OpenShift environment suitable for single-node edge computing scenarios.

Thank you for following along, and happy deploying!

Podman Desktop 1.14 Release

· 10 min read
Evžen Gasta
Associate Software Engineer

Podman Desktop 1.14 Release! 🎉

podman-desktop-hero-1.14

Podman Desktop 1.14 is now available. Click here to download it!

This release includes:

  • Kubernetes improvements with a new dashboard: A new landing screen for Kubernetes has been added with UI changes that gives an overview of your entire cluster.
  • Port forwarding for pods: This new feature allows users to configure port forwarding in their Kubernetes environment.

Introduction to Podman Desktop extensions

· 4 min read
Charlie Drage
Software Engineer

programming

Extensions are a powerful tool to customize and extend the functionality of Podman Desktop. Whether you want to add new container management features, streamline current workflows, or create custom UI elements specific to your tech stack, building extensions allows you to tailor the Podman Desktop experience to your specific needs.

In this guide, we'll introduce how you can build your own Podman Desktop extension, with links to detailed documentation that covers each part of the process.

Introduction to extensions

Extensions are abundant in Podman Desktop and can be found in the Extensions -> Catalog section.

extension catalog

Each extension expands on Podman Desktop, such as providing Kubernetes development clusters with Minikube or even analyzing your image layers.

Below is an example of the layers explorer extension and how it integrates into Podman Desktop:

layers_explorer

Getting started with your project

The first step in creating your extension is setting up the project environment. To learn how to configure the project and add basic components, check out the Templates for creating an extension guide, which walks you through initializing your project from an official template.

Adding UI components

One of the most common tasks when creating an extension is adding a user interface. Whether it’s adding buttons, panels, or icons, UI components help make your extension more interactive and accessible. Adding a UI component is totally optional and an extension can be ran without UI components. Learn more about this in the Adding UI components documentation, where you’ll find instructions on creating and integrating components into the application’s UI.

Working with icons

Icons are a great way to make your extension more visually unique. You can learn how to add and style custom icons by following the Adding icons documentation.

Below is an example of how the bootc extension added icons to the image list within Podman Desktop:

icons

Extensions often integrate with existing menus and navigation to offer users easy access to new commands and features. If you want to add items to the context menu, explore the Menu configuration documentation, which explains how to add commands to menus and control when they are displayed using When Clauses.

Below is an example of how the bootc extension added a new menu command to image list:

menus

Adding and configuring commands

Commands are the backbone of most extensions, allowing users to interact with the application and trigger specific actions.

If you need to define and register custom commands, the Commands guide will show you how to create commands that respond to user actions or input, and tie them into your extension’s workflow.

You can also configure these commands to appear in different contexts. Check out the When clause Contexts documentation to learn more about restricting commands to specific scenarios.

Commands are heavily influenced by VS Code commands and can be configured similarly. See our commands guide for more information.

Setting up onboarding workflows

Creating a smooth onboarding experience is essential to help users get started with your extension. This includes steps for CLI binary installations or other initial setup values.

You can provide guidance, tutorials, or initial setup steps using the Onboarding workflow guide.

Below is an example of how the built-in compose extension adds onboarding for the compose CLI binary installation:

compose

Configuration settings

Once you’ve built your components and commands, you may want to setup configuration settings for advanced usage of your extension.

The Configuration documentation outlines the configuration file structure and how to link everything together to use user-specific values.

Publishing your extension

Publishing enables users to install your extension, you can compile your extension into a container image for users to easily consume. Follow the Publishing guide to learn how to distribute your extension.

Conclusion

Creating an extension opens up endless possibilities to customize Podman Desktop to your specific needs.

It is also easy to package and publish your extension for others to use.

Have fun exploring our documentation on how to create an extension and happy coding!

Podman Desktop 1.13 Release

· 6 min read
Sonia Sandler
Associate Software Engineer

Podman Desktop 1.13 Release! 🎉

podman-desktop-hero-1.13

Podman Desktop 1.13 is now available. Click here to download it!

This release includes:

  • Hyper-V support: You can now create and manage Hyper-V Podman machines directly from Podman Desktop.
  • Search image feature: Search for an image from Podman Desktop.
  • Updated empty state pages: Start your journey in the containers, images, pods, and Kubernetes pages with a click of a button
  • New Kubernetes navigation: All Kubernetes related pages have been moved to a separate sub menu for easier and less crowded navigation.
  • Image Layer explorer extension: With this new extension, you can explore the various layers of images.
  • Experimental Docker compatibility mode page: You can now try out our experimental Docker compatibility mode page.

Build your Kubernetes application with Podman Desktop

· 5 min read
Shipra Singh
Tech writer

The integration of Podman Desktop with Kubernetes helps you to run your application on a Kubernetes cluster, such as Kind or Minikube.

This blog covers the following aspects:

  • Build a containerized application from registry images
  • Create a pod
  • Set up a local Kubernetes cluster
  • Deploy the application to Kubernetes
  • Verify the running service

Building a containerized application

With this blog, you will build a containerized application that uses:

  • a back-end Redis server container
  • a front-end Python application container

To do so, you can pull the relevant images from the quay.io registry.

  1. Go to the Images component page.

  2. Click Pull. pull from registry

  3. Start the first container:

    1. Enter the image name to pull from a registry. For example, quay.io/podman-desktop-demo/podify-demo-backend. enter image name
    2. Click Pull image. A download complete notification opens.
    3. Click Done.
    4. Click the Run Image icon corresponding to the new image added. running an image
    5. Enter the container name redis-server.
    6. Click Start Container. start a back-end container
    7. Click the Logs tab to view that the Redis server is running in standalone mode. view Logs tab
  4. Start the second container:

    1. Enter the image name to pull from a registry. For example, quay.io/podman-desktop-demo/podify-demo-frontend.

    2. Click Pull image and then Done.

    3. Click the Run Image icon corresponding to the new image added.

    4. Enter the container name python-app. enter image name

      note

      If the default port is already in use, you can specify a different port in the Port mapping field.

    5. Select the Networking tab and enter hostname as redis-server and IP address as 10.88.0.2 to enable communication with the Redis server.

      note

      You can find the IP address in the Inspect tab of the redis-server Container Details page.

    6. Click Start Container. start a front-end container

    7. Click the Logs tab to view that the application is running on port 5000. front-end app running

    8. Click the Open browser icon on the right side of the page.

    9. View the running front-end application. running front-end application

Creating a pod

You can use both the containers to create a pod. This way both the front-end and back end container applications can share resources, such as storage and network.

Pod creation with existing containers

  1. Go to the Containers page.
  2. Select both the front-end and back-end containers.
  3. Click the Create Pod button. create a pod from containers
  4. Click Create Pod. copying containers to a pod
  5. View the newly created pod on the Pods page.
  6. Click the name of the pod and then click the Summary tab to view its summary. viewing pod details

Alternative: Pod creation with Kubernetes YAML

You can generate a Kubernetes manifest for any existing pod or container and use it to create a local Kubernetes YAML file. Then, you can customize that file and create a pod from it.

At the time of pod creation, you can select a runtime to indicate whether you want to run the pod on a Podman engine or a Kubernetes cluster. Based on the selection, you get to see the newly created pod running in that environment on the Pods component page.

The following procedure creates a pod that runs on a Podman engine.

  1. Go to the Pods page.
  2. Click the overflow menu icon corresponding to the pod. overflow menu icon
  3. Select the Generate Kube option from the dropdown list.
  4. View the Kubernetes YAML configuration in the Kube tab. kube manifest
  5. Copy the configuration and paste it into a YAML file on your machine.
  6. Edit the YAML configuration and save it.
  7. Go to the Pods component page.
  8. Click Play Kubernetes YAML. play kubernetes yaml
  9. Select the YAML file from your machine.
  10. Check that the Runtime field is set to Podman container engine.
  11. Click Play and then Done.
  12. View the newly created pod on the same page.

After creating the pod, set up a local Kubernetes cluster to deploy the pod.

Setting up a local Kubernetes cluster

You can set up a local Kubernetes cluster. Once the cluster is connected and running, you can deploy your application on it.

Based on your preference, use the Kind or Minikube extension:

  1. Install the extension from the Extensions catalog.
  2. Create a Kubernetes cluster. See Kind cluster creation or Minikube cluster creation.

Once a kubernetes cluster is created, you can view a running control plane node and a running Kubernetes service on the Kubernetes component page. The page also shows that the cluster is connected.

Deploying the application to Kubernetes

You can deploy the application pod to a Kubernetes cluster that has an active connection and access it through a service. Also, any container that is part of a pod is deployable to a Kubernetes cluster.

  1. Select your Kubernetes context.

  2. Go to the Pods component page.

  3. Click the overflow menu icon corresponding to the pod. overflow menu icon

  4. Select the Deploy to Kubernetes option from the dropdown list.

  5. Select the checkbox to expose the service locally using the ingress controller. expose the service locally

    note

    When you configure custom port mapping while running an image, you get the option to select an Ingress host port from the dropdown list. ingress-host-port Otherwise, you do not see the option.

  6. Click Deploy and then Done.

Verifying the running service

  1. Go the Kubernetes component page.

  2. Perform the following steps:

    1. Click the Services option to view the newly created service, my-pod-5000. service created
    2. Click the Ingresses and Routes option to view the newly created ingress, my-pod. ingress created
    note

    Use the Apply YAML button to directly apply a Kubernetes YAML file to create a resource.

Podman Desktop 1.12 Release

· 15 min read
Charlie Drage
Software Engineer

Podman Desktop 1.12 Release! 🎉

podman-desktop-hero-1.12

Podman Desktop 1.12 is now available. Click here to download it!

This release includes:

  • Podman remote: We now support remote Podman setups! Manage your remote Podman machines all within the UI.
  • macOS GPU support: Container GPU access on macOS is now available. libkrun is now a selectable provider type to allow GPU passthrough enablement.
  • Windows GPU support: Want to try out Windows GPU support too? Podman already supports it, but we are now showcasing it in our AI Lab extension
  • Podman 5.2.0: This new version of Podman provides GPU access for macOS, as well as a host of new features.
  • Light mode out of experimental: Our light mode has been well-received, and we have now marked it as non-experimental! Enjoy the new theme.
  • Kubernetes features: ConfigMaps, Secrets and multi-file Kubernetes YAML applying have now been added to our Kubernetes dashboard.
  • Improved font consistency: You'll notice a big difference in consistency this release, as we updated all font sizes throughout Podman Desktop.

Using RHEL as a WSL podman machine

· 5 min read
Jeff Maury
Engineering Manager

Red Hat provides a tool called Image Builder that allows developers to build their own custom image of RHEL in a variety of formats. Recently, Image Builder added WSL as a target, enabling you to run RHEL on Windows as a WSL distribution.

This article details the steps and actions required to build and run your RHEL WSL image.

The purpose of this article is to describe the options needed for the RHEL WSL distribution so that it can be used as a Podman machine.

To use the RHEL WSL image as a Podman machine, ensure that the following packages are installed:

  • podman
  • podman-docker
  • procps-ng
  • openssh-server
  • net-tools
  • iproute
  • dhcp-client
  • sudo
  • systemd-networkd

Luckily, all but the last package are available from the pre-configured RHEL 9 repositories. The last package (systemd-networkd) is available from the EPEL 9 repository and will need to be configured when building the image.

Build the image

Navigate to image builder

image builder

On the upper right menu, enable the Preview mode.

image builder preview

Click Add blueprint to open the Create image dialog wizard.

image wizard

On the Image output page, select the following:

  • From the Release list, select Red Hat Enterprise Linux (RHEL) 9.
  • From the Select target environments option, select WSL - Windows Subsystem for Linux (.tar.gz).
  • Click Next.

On the Register page, select Automatically register and enable advanced capabilities.

On the OpenSCAP page, as it is not supported for WSL images, click Next.

On the File system configuration page, select Recommended: Use automatic partitioning.

  • Click Next.

On the Content page, complete the following steps to add additional packages to your image:

  • On the Repository snapshot step:

    • Select Use latest content.
    • Click Next.
  • On the Custom repositories step:

custom repositories

Click on the Create and manage repositories here link. This will open a new tab

custom repositories

Click Add repositories now

add custom repository

Click Add repositories

add custom repository

On the Add custom repositories page, select the following:

Close the tab and switch back to the previous one

  • In the filter input field, type EPEL
  • Select the EPEL 9 repository

custom repository created

Click Next

  • On the Additional packages step:

    • On the Available packages search field, enter podman and click the button.
    • Select the podman and podman-docker packages.
    • On the Available packages search field, enter procps-ng and click the button.
    • Select the procps-ng package.
    • On the Available packages search field, enter openssh-server and click the button.
    • Select the openssh-server package.
    • On the Available packages search field, enter net-tools and click the button.
    • Select the net-tools package.
    • On the Available packages search field, enter iproute and click the button.
    • Select the iproute package.
    • On the Available packages search field, enter dhcp-client and click the button.
    • Select the dhcp-client package.
    • On the Available packages search field, enter sudo and click the button.
    • Select the sudo package and click the > button to add the selected package shown in the package search results to the Chosen packages dual list box.
    • On the Available packages search field, enter systemd and click the button.
    • Select the systemd-networkd package.
    • Click Next

On the First boot script configuration page:

  • Click Next.

On the Details page:

  • In the Blueprint name, enter rhel-wsl.
  • Click Next.

On the Review page:

  • Click Create blueprint and build image.

images list

The image is being built. Once the build is finished, the download link will be available. Click on the Download (.tar.gz) link and save the downloaded file to one of your local folders.

Create the RHEL WSL podman machine

Launch Podman Desktop and go to the Settings -> Resources page:

images list

On the Podman provider, click on Create new ...

On the Create Podman machine page, click the Browse button for the Image Path field and select the file downloaded from Image Builder.

create podman machine

Click on the Create button: the machine will be created and started. After a short time, the operation status should be reported.

podman machine created

Let's play with the RHEL WSL podman machine

Go to the Images page and pull the httpd image

pull httpd image

Click on Done

images list

Start the image by clicking on the Run image icon

images list

Once the container is started, the Apache server can be accessed on http://localhost:9000

Podman Desktop 1.11 Release

· 6 min read
Charlie Drage
Software Engineer

Podman Desktop 1.11 Release! 🎉

Podman-desktop-1-11-hero

This release introduces:

  • Experimental light mode!: Our most-requested feature is here! Try out our new experimental light mode in the settings.
  • Rosetta support for Apple Silicon: Build AMD64 binaries near the same speed as ARM64 binaries.
  • Kubernetes improvements: Check out our new Node and Volume pages for Kubernetes.
  • Improved UI: In addition to our light mode, you'll notice updates to our container listing page.
  • Increased manifest support: Images built as a manifest are now grouped together.

Podman Desktop 1.11 is now available. Click here to download it!

Podman Desktop 1.10 Release

· 5 min read
Tim deBoer
Architect

Podman Desktop 1.10 Release! 🎉

Podman-desktop-1-10-hero

This release introduces:

  • 1 Million Downloads!: Wow, we made it!
  • Extension Catalog: Redesigned extensions page and catalog to get the most out of Podman Desktop.
  • Podman 5: Podman 5.0.2 now recommended for all users.
  • Multi-platform Builds: Build for multiple platforms at once.
  • Extension API Improvements: Additional updates to the extension API used by 🦭 Podman Desktop's extensions.

Podman Desktop 1.10 is now available. Click here to download it!

Podman Desktop 1.9 Release

· 7 min read
Florent Benoit
Principal Software Engineer

Podman Desktop 1.9 Release! 🎉

Podman-desktop-1-9-hero

This release introduces: 🦭 a splash of innovation, a wave of excitement, and an ocean of possibilities!

  • Podman 5! Podman 5.0.1 for new users (and as an experimental upgrade for 4.x users).
  • Podman 4.9.4: Podman 4.9.4 is now included in both Windows and macOS installers.
  • Backup/Restore Images: Save images or containers to tar archives and restore them.
  • Kubernetes Pods Terminal: Connect to a terminal within Kubernetes pods.
  • Extension API Improvements: Additional updates to the extension API used by 🦭 Podman Desktop's extensions.

Podman Desktop 1.9 is now available. Click here to download it!

Podman Desktop 1.8 Release

· 8 min read
Tim deBoer
Architect

Podman Desktop 1.8 Release! 🎉

Podman-desktop-1-8-hero

We've got a new release with a ton of seal appeal! This release introduces:

  • Podman 4.9.3: Podman 4.9.3 is now included in both Windows and Mac installers.
  • Kubernetes Explorer: Advanced UI and new tools for working with Kubernetes clusters.
  • Global Onboarding: Configure and set up your environment without any hassle, with a set of guided workflows.
  • Learning Center: Discover new use cases and capabilities for developers.
  • Extension API Improvements: Another big update to the extension API enabling more goodness for 🦭 Podman Desktop's extensions.
  • Enhanced Builds, Pods List, and Troubleshooting Pages: Build for different platforms, an upgraded pods view, and more.

Podman Desktop 1.8 is now available. Click here to download it!


Release Details

Podman 4.9.3

🦭 Podman 4.9.3 includes key fixes for stability and reliability issues reported by our users - especially if you are using Apple silicon architecture. If you've been floundering we highly recommend updating!

Kubernetes Explorer

Progressively introduced in past releases as an experimental feature, we're ready to expand our capabilities to help developers transition from containers to Kubernetes. In this release we are introducing a new set of features that enable the developers to work with more Kubernetes resources, offering more granular and interactive control over your applications.

Now available in 🦭 Podman Desktop is a new Kubernetes Explorer with the ability to work with Deployments, Services, Ingresses, and Routes, in addition to the existing support for Pods. For each of those resources, 🦭 Podman Desktop provides real-time information about the status of resources on the cluster. From the top right of this overview page you can also click Apply YAML to create or update resources on the cluster similar to 'kubectl apply -f', and see the current connection status.

Deployments Overview

Just like with local containers or images, you can click for more details on Summary, Inspect, and Kube (YAML) pages.

Deployment Summary

See a problem? You can edit and apply changes direct from the Kube tab.

Deployment Kube YAML

🦭 Podman Desktop continues to bridge the gap and discrepancies to empower developers working with containers with efficient workflows to target Kubernetes from their local workstation. This is all in addition to some of the great features already available:

  • Native Kubernetes support with Podman
  • Podify - transition containers into Pods
  • Setting up local Kubernetes environments with Minikube and Kind extensions
  • Deploy to Kubernetes and push local image from Podman to a Kubernetes environments
  • Managing Kubernetes contexts
  • Connecting to remote Kubernetes clusters

Global Onboarding

Configuring and setting up a local environment is now easier with the introduction of a new wizard-based onboarding flow. In this flow developers can pick the different tools that they need, and 🦭 Podman Desktop will walk them through the configuration and setup of each of these tools.

The global onboarding flow allows developers to configure Podman, Compose, and kubectl (needed for working with Kind and Minikube or remote Kubernetes environments). This makes the transition to 🦭 Podman Desktop becomes simpler, as any needed dependencies are automatically configured.

Global Onboarding

Learning Center

In this release, we've added a Learning Center on the Dashboardm enabling developers to discover, learn, and expand their knowledge on related topics to containerization. These guides are handy and easily accessible, and cover topics from learning how to containerize an existing application to discovering the latest features of 🦭 Podman Desktop and how to best use them.

Learning Center

Extension API Improvements

We continued spent a lot of time adding new extension API to give upcoming extensions more capabilites and even better integration into 🦭 Podman Desktop:

  • Split getMatchingPodmanEngine #6160
  • Add HealthCheck parameter when creating container #5981
  • Expose listPods to extensions #5864
  • Labels for createPod #5862
  • Allow to create containers within a pod #5848
  • OpenPod should redirect to the pod's view #5846
  • Enhance createContainer API with missing parameters #6011
  • Allow extensions to use openDialog/saveDialog #6009
  • Allow customized icons in contributed actions #5995
  • Adding missing types #6213
  • Allow to navigate to a specific webview from extensions #5899
  • Expose stopPod and removePod to extensions #5898
  • Use new API for open/save dialog #6051, #6050, #6049
  • Extend Podman Desktop API Build Image parameters #5882
  • Allow extension to stats container #6211

Other Notable Enhancements

We've added over 40 features this release, here are some other highlights:

  • Improve Podman Desktop update alert #6068
  • Add gather & download logs button in troubleshooting #5119
  • Enable podman machine for Linux #5902
  • Multi-delete animation #5717
  • Image deletion animation #5709
  • Volume deletion animation #5707
  • Open OpenShift routes #5560
  • Add open created pod details #4499
  • Use https when deploying to kubernetes cluster #5824
  • Getting started carousel on dashboard page #5142
  • Add confirmation dialog when deleting objects #5445

We've also made some significant progress on implementing light mode:

  • Use theme colors for invert content #6029
  • Use theme colors for secondary nav #6028
  • Apply theme colors for global nav #6027
  • Apply theme colors for the titlebar #6025
  • Consistent close button #6060
  • Use components in quickpick #6057
  • Provide css colors to webviews #5963
  • Publish colors to the style of the app #5962
  • Allow extensions to contribute themes with set of colors #5961
  • Store for colors #5960
  • Include a color registry #5958
  • Add utility method to get the value of the theme #5947
  • Send event when operating system change the colors #5946
  • Cleanup dark: prefix colors #5944
  • Extract color palette to its own file #5931
  • Input component #5904
  • Input errors, use input component in run image #5988
  • Use input when building image #5986
  • Use input for proxy settings #5943
  • Use input for registries #5939
  • Use input when creating pod from containers #5935
  • Use input component in extension pages #5934
  • Use input in create volume #5933
  • Use input when renaming image #5964
  • Use checkbox component in deploy to kube #6030

Notable Bug Fixes

We squashed a lot of bugs this release, including the following:

  • Copy volume mounted when copying container to pod #5640
  • Change order of "Create" button on Volumes and Containers list #6092
  • Refresh onboarding item when context value gets updated (#4597) #6173
  • Better log on informer connection error #6158
  • Website: replace broken links #6111
  • Center empty screens #6077
  • Do not ask confirmation to open local folder/files #5743
  • Force breadcrumbs to be vertically aligned #5741
  • Long usernames in auth page #5737
  • Message property used to update task name #5731
  • Nav item UI fixes #5886
  • Display back the icons of registries #5843
  • Check route tls to use either http or https #5825
  • White tooltips #5887
  • Limit registry username column width #5718
  • Remove docker compatibility warning & button on Linux #5903
  • Image usage by containers #5663
  • Current context should be changed/updated when deleting it #5819
  • Do not collapse categories on sidebar #5727
  • Make localhost a valid domain for env.openExternal calls #5716

Documentation

Along with this new version of 🦭 Podman Desktop the documentation has had the following improvements:

  • Container and image related methods of containerEngine api #5891
  • Removed installing podman with openshift local #6070
  • Document image checker provider API #5813
  • Adding withProgress api docs #5736
  • Added link to the troubleshooting page #5734
  • Troubleshooting installation on macOS M1/M2/M3 #5708
  • Volume deletion #5707
  • Added Accessing Podman from another WSL instance (config, verify) #5706
  • Using typedoc to generate api documentation #5705

Community Thank You

🎉 We’d like to say a big thank you to everyone who helped make 🦭 Podman Desktop even better. In this release we received pull requests from the following people:


Final notes

Fixed Issues

The complete list of issues fixed in this release is available here.

Where to Download

Get the latest release from the Downloads section of the website and boost your development journey with Podman Desktop. Additionally, visit the GitHub repository and see how you can help us make Podman Desktop better.

Podman Desktop Wins 2024 DEVIES Award

· 2 min read
Cedric Clyburn
Developer Advocate

We’re honored to announce that Podman Desktop has been recognized with the prestigious 2024 DEVIES Award in the category of Containers & Kubernetes. This award is a testimony to the effectiveness of the Podman Desktop team and greater open-source community's efforts to help developers. Podman Desktop increases developer container workflow efficiency as well as provides an easy transition of applications from containers to Kubernetes, the leading open-source container orchestration platform.

“While Podman Desktop only went into general availability last year, the community response has been very impressive and incredibly gratifying. We are extremely proud to receive this outstanding recognition which celebrates passion, commitment and innovation for shaping the future of container development backed by the vibrant open-source standards that Red Hat supports. ” said Stévan Le Meur, Product Manager on the Podman Desktop team.

hero

What are the DEVIES awards?

The DEVIES Awards, presented by DeveloperWeek, recognize the most innovative and impactful tools, platforms, and technologies in the software development community. Podman Desktop's win as the best innovation in Containers & Kubernetes highlights its significant impact on the industry and its role in revolutionizing the way developers build, ship, and run their applications. DEVIES Award winners are selected from hundreds of nominees by the independent, industry-leading DevNetwork Advisory Board.

Join us in celebrating!

We’re excited to be receiving this award on stage at DeveloperWeek 2024, happening on February 21-23, 2024, in Oakland, CA and February 27-29, 2024 (Virtually). In addition, Red Hat developer advocate Cedric Clyburn will be presenting a session on Podman Desktop, titled “Going from Containers, to Pods, to Kubernetes – Help for Your Developer Environments!”, with a full presentation on Podman, a demonstration of the Podman Desktop experience, and a multi-tier application going from containers, to pods, to finally Kubernetes!

Finally, it would be seal-y to not include and acknowledge that this award was earned by the entire Podman Desktop community of contributors! We also thank the DevNetwork Advisory Board and DeveloperWeek for this honorable award, and for the opportunity to share Podman Desktop's innovations with the greater developer community.

Unlock WebAssembly on macOS & Windows

· 11 min read
Florent Benoit
Principal Software Engineer

Seamlessly run WebAssembly/Wasm binaries on macOS and Windows

You might have heard excitement recently about Wasm and WASI. Imagine a world where you can effortlessly run Wasm binaries and distribute them using Open Container Initiative (OCI) container images – a singular image deployable across multiple architectures.

Though the concept seemed straightforward, accomplishing this task proved to be quite challenging, particularly on macOS and Windows. The complexity comes from the additional virtual machine running Linux. This machine needs all of the dependencies and prerequisites correctly setup.

The wait is over. Our blog post unveils the solution, guiding you through the process of enabling Wasm workloads on both macOS and Windows.

hero

Podman Desktop 1.7 Release

· 6 min read
Tim deBoer
Architect

Podman Desktop 1.7 Release! 🎉

Podman-desktop-1-7-hero

We've got a new release with a ton of seal appeal! This release introduces:

  • Podman 4.9.0: Podman 4.9.0 is now included in both Windows and Mac installers.
  • Extension API Improvements: A big update to the extension API enabling more goodness for 🦭 Podman Desktop's extensions.
  • Experimental Kubernetes UI: Get a sneak peek at the more advanced UI for working with Kubernetes clusters.
  • Enhanced Builds, Pods List, and Troubleshooting Pages: Build for different platforms, an upgraded pods view, and more.

Podman Desktop 1.7 is now available. Click here to download it!


Release Details

Podman 4.9

🦭 Podman 4.9 includes key fixes for stability and reliability issues reported by our users. If you've been floundering we highly recommend updating!

If you are on a Mac M3, we are aware of a critical issue in Podman and expect to update very soon to pick up this fix: #21353 - Update to new QEMU (based on #1990 - QEMU issue on M3). If you are hitting this problem there is a workaround here and there.

Extension API Improvements

We have spent a lot of time this release adding new extension API to give upcoming extensions more capability and even better integration into 🦭 Podman Desktop. We have added support for full page webviews, image badges, icons, a navigation API, and API access to more function from the container engine:

  • Webview in the UI #5594
  • Add webview API for extensions #5592
  • Allow extensions to list webviews #5628
  • Create container without starting it #5643
  • Expose create/start Pod and replicatePodmanContainer #5648
  • Expose create/list/delete volumes for extensions #5598
  • Add getImageInspect to API #5596
  • New contribution points for icon of image #5543
  • Add BuildOption #5533
  • Add platform parameter to image build method #5501
  • Expose build image method #5500
  • Navigation api #5558
  • Register badges by extensions for image list/details #5557
  • Install extensions from private registries #5473

Experimental Kubernetes UI

We have been working the last couple months to expand our support for Kubernetes. This support isn't ready to set sail yet, but if you're working with a Kubernetes cluster we'd love to start getting your feedback on the direction!

To 'break the seal' and try it out, go to Settings > Preferences > Kubernetes, and enable the Experimental option:

Kubernetes Preference

This will add three new items to the main navigation, allowing you to view Deployments, Services, and Ingress & Routes:

Kubernetes Deployments Kubernetes Services Kubernetes Ingresses & Routes

In this release you can click on deployments and services to view additional details (like the Summary, Inspect, and YAML tabs), but not yet for ingresses or routes.

We hope things go swimmingly for you, but please open Github issues to let us know what else you'd like to see.

Enhanced Builds, Pods List, and Troubleshooting Pages

When building an image you can now chose which platform(s) to build the image for:

Build platform

We've upgraded the Pods view to use the same table component as images and volumes. This allowing sorting and better column scaling:

Pods table

Having trouble and want a fresh start? The Troubleshooting page has switched to tabs and there is an option to purge your existing install:

Troubleshooting Purge


Other Notable Enhancements

We added over 40 features this release, here are some of the other highlights:

  • Pressing esc exits onboarding #5612
  • Quick pick case-insensitive filtering #5582
  • Add UI badge component #5522
  • Extend connection input type in build image #5499
  • Nav sections #5449
  • Improve Authentication Providers page #5424
  • Adding groupContributions logic #5415
  • Add option to select how to open devtools in dev mode #5274
  • Form progress #5253
  • Improved provider cards #5013

Notable Bug Fixes

We squashed over 25 bugs this release, including the following:

  • Copy volume mounted when copying container to pod #5640
  • Adding missing Labels property #5632
  • Fix UI not being refreshed if container is only created #5619
  • Quick pick filter removes selection #5613
  • Add missing types for createContainer API #5504
  • Use window.showMessageBox instead of custom modal #5421
  • Add cleanupSupport property #5309
  • Empty screen reset filter by default #5307
  • Do not fetch pre-releases of compose #5296
  • providerinfo badge #5268
  • Don't refresh image list when age updates #5267
  • Rename kubectl extension #5255
  • Try to search kubectl on the user path first #5248
  • Dispose the wsl2 command when unregistering extension #5246
  • Handle event when loading images from archives #5240
  • Edit Podman machine support for MacOS only #5239
  • Improve default contribution action icon #5236
  • Color of primary/secondary buttons should be white #5232
  • Disable notification when updating podman (#5228) #5229
  • Allow table columns to specify overflow #5222
  • ProgressImpl properly middleware tasks to set the proper result status #4342

Documentation

Along with this new version of 🦭 Podman Desktop the documentation has had the following improvements:

  • Update compose blog post link #5547
  • Message when the app terminates because another instance exists #5348
  • Document onboarding id rules #5211
  • Multi-platform extension #5205
  • Blog post on Compose guestbook application #5033
  • Refactored setting up container registries #4965

Community Thank You

🎉 We’d like to say a big thank you to everyone (yes, that means you, Anders!) who helped make 🦭 Podman Desktop even better. In this release we received pull requests from the following people:


Final notes

Fixed Issues

The complete list of issues fixed in this release is available here.

Where to Download

Get the latest release from the Downloads section of the website and boost your development journey with Podman Desktop. Additionally, visit the GitHub repository and see how you can help us make Podman Desktop better.

Getting started with Compose on Podman Desktop

· 5 min read
Charlie Drage
Software Engineer

In this blog post we will learn how take a multi-container Compose application and use it within Podman Desktop.

Objectives

  • Start the Compose YAML through podman compose up.
  • View the guestbook web application.
  • Confirm the web application is being synchronized and running correctly with the database.
  • Use Podman Desktop to view, inspect and access the terminal of the Redis cluster.

What is Compose

Compose is a specification for defining and running multi-container Docker applications. With pose, you use a YAML file to configure your application’s services, networks, and volumes. This allows you to capture in a single file the entire configuration necessary to run a set of interconnected containers as an application. For example, if you have an application that requires a web server, a database, and a caching service, you can define these components and their relationships in your Compose file.

To use the Compose YAML, you can use a specification implementation such as podman compose and docker compose.

Before we begin

If you do not have Compose installed, let's go through the onboarding process to install the Compose implementation binary:

  1. Get to Resources under Settings > Resources.
  2. Click Setup under Compose (it will appear if it has not been installed yet).
  3. Go through the onboarding process.

Onboarding process

Confirm that you are able to run podman compose:

podman compose
Run compose workloads via an external provider such as docker-compose or podman-compose

Description:
This command is a thin wrapper around an external compose provider such as docker-compose or podman-compose. This means that podman compose is executing another tool that implements the compose functionality but sets up the environment in a way to let the compose provider communicate transparently with the local Podman socket. The specified options as well the command and argument are passed directly to the compose provider.
...

Download and run the example application

Our example application is located at github.com/redhat-developer/podman-desktop-demo.

We will use git clone so we can build the Go binary web application:

git clone https://github.com/redhat-developer/podman-desktop-demo
cd podman-desktop-demo/guestbook-compose

Run podman compose up -d to start the application:

podman compose up -d
>>>> Executing external compose provider "/usr/local/bin/docker-compose". Please refer to the documentation for details. <<<<

[+] Running 3/3
✔ Container redis-replica Started 0.0s
✔ Container web Started 0.0s
✔ Container redis-leader Started 0.0s

Viewing the guestbook application

Within Podman Desktop, you can now see that all three containers are up and operational.

Click the "Open Browser" button to view the web application:

Open browser

Within the Guestbook web application, you can:

  • "Sign" the guestbook, which will write to the Redis leader and synchronize to the replicas.
  • "Read" from the guestbook, which will read from the pool of Redis replicas. This allows for readability even if the Redis leader is unavailable.
  • /env: View the container's environment variables.
  • /info: View information about the Redis cluster.

Guestbook application

Viewing and modifying the database

Using Podman Desktop, you can also access the container's terminal directly from the GUI and modify the database.

Click "Open Terminal" to access the redis-leader terminal:

Open terminal

Modify the database as if you are doing database administration:

  1. Run redis-cli within the container to access the Redis database.
  2. Type LPUSH guestbook "Hello World!" and you will see your web application update in real-time.
  3. Type DEL guestbook and you will see that your database drops the guestbook key and clears the database.

Redis CLI

Changes will reflect in real-time on the guestbook.

You can further modify the database and see the changes propagate to the Redis replicas.

For example, view the logs of the redis-replica, and you will notice that there are periodic database synchronizations as well as reads to the database:

Redis replica logs

How does it work?

A quick overview of how the architecture works in this multi-container scenario:

  • Within the Guestbook application, it looks for a database with the names redis-leader and redis-replica on port 6379.
  • Because it is a Compose application, the containers are connected on the same network. This means that a neighboring container can be network-accessible simply by its container name.

There is a set of environment variables that the web application can modify in the Compose application:

  • REDIS_LEADER: The default is redis-leader.
  • REDIS_REPLICAS: The default is redis-replica. Can be comma-separated, such as redis-replica-1,redis-replica-2.
  • REDIS_PORT: The default is 6379.
  • SERVER_PORT: The default is 8080.

Scaling more replicas

Want to scale more replicas? This can be achieved by adding an environment variable to your compose.yaml and duplicating your redis-replica entry.

Modify your compose.yaml as follows:

services:
redis-leader:
container_name: redis-leader
image: redis:latest
ports:
- '6379'

redis-replica:
container_name: redis-replica
image: redis:latest
ports:
- '6379'
command: redis-server --replicaof redis-leader 6379

redis-replica-2:
container_name: redis-replica-2
image: redis:latest
ports:
- '6379'
command: redis-server --replicaof redis-leader 6379

web:
container_name: web
build: ./web
environment:
- REDIS_REPLICAS=redis-replica1,redis-replica2
ports:
- '8080:8080'

Run podman compose up -d again to ensure the new container has been added and the new environment variable has propagated:

podman compose up -d
>>>> Executing external compose provider "/usr/local/bin/docker-compose". Please refer to the documentation for details. <<<<

[+] Running 4/4
✔ Container redis-replica-2 Started 0.0s
✔ Container redis-leader Running 0.0s
✔ Container web Started 0.0s
✔ Container redis-replica Running 0.0s

Podman Desktop 1.6 Release

· 11 min read
Stevan Le Meur
Product Manager

Podman Desktop 1.6 Release! 🎉

Podman-desktop-1-6-hero

This release introduces:

  • Minikube Featured Extension: Minikube extension to create local Kubernetes clusters in containers.
  • Podman 4.8.2: Podman 4.8.2 is now included in Windows and Mac installers.
  • Setting Page for Command-Line Tools: Manage and update your CLI tools.
  • Kubernetes Contexts Manager: Browse all your kubernetes contexts, set default and remove unused ones.
  • Editable Podman Machine for MacOS: Easy resize and reconfiguration of the Podman runtime environment.
  • Filters for Containers and Pods Lists: Focus on the containers and Pods you are working with.
  • Sorting on Volumes and Images List: Sort volumes or images with your prefered criterias.
  • Environment Colums on Containers and Pods lists: Easy catch of the environment on which a container or a pod is running on.
  • Extension API Improvements: Another set of improvements to the extension API enabling more goodness for 🦭 Podman Desktop's extensions.

Podman Desktop 1.6 is now available. Click here to download it!


Release Details

For developers who need to run Kubernetes locally and reproduce an environment close to production for development and experimentation purposes, Podman Desktop allows users to easily set up that environment on a local machine. There are two extensions providing the capability to configure a open source Kubernetes cluster locally, you can either choose between Kind or Minikube.

The Minikube extension allows you to install Minikube on your workstation and also to setup a Kubernetes cluster locally running in a container! Yes, you read that correctly - in a container similar to how Kind works. The advantage is that it's lighter and faster to start. With Minikube, one of the advantage, is that you can build your images locally with Podman and get them automatically available in your local Kubernetes cluster - which will speed up your turnarounds when you want to test your application. If you want to learn more this, read the following blog post.

Minikube-feature-extension

Command-Line Tools Configuration: Compose and Kubectl

Configuring and managing your setup is getting easier with the addition of a new section in the Settings to manage command-line tools. In Podman Desktop, extensions can list command-line tools that are helpful to their users or required to make use of the installed extensions.

There are two command-line tools within Podman Desktop that allows you to view whether they are installed or require an update:

  • Compose binary for running 'podman compose' commands.
  • kubectl for interacting with Kubernetes clusters.

cli-tools

From the settings you can see the command-line tools that are installed, and you can see the version - and when a new version is available, you'll get a small notification to allow you easily update to that version.

Compose-Update

Kubernetes Contexts Manager

We are introducing a new screen available from the Settings which allows you to easily manage your Kubernetes contexts. Podman Desktop was already providing the handy context switcher available from the status bar, but when you get to work with multiple Kubernetes environments, it's not uncommon to end with a big and long list of Kubernetes contexts.

The new Kubernetes Contexts screen allows you to easily see all your registered Kubernetes contexts. You can use the screen to clean up your registered contexts, or set the current (default) context.

Kubernetes Contexts List

Editable Podman Machine

A Podman machine is a virtual environment specifically designed to run Podman containers on Mac and Windows. It allows users to manage and operate containerized applications in an isolated and controlled setting. When creating a Podman machine, you configure its settings: memory, CPU(s) and disk size.

We've received the feedback regarding the ability to reconfigure your Podman machine on the go. This is now possible for macOS users, and particularly useful when you start with an environment and need to scale it up based on new needs and containers you would like to run in your Podman environment.

Editable podman machine

You'll notice we improved the sliders to configure the Podman machine's options - and also introduced a way to enter numeric values directly.

Tabs/Filters for Containers and Pods

Being able to quickly identify the containers and the pods you are working with is critical when you are iterating on the development of your application. For this reason, we added filters at the top of the lists of Containers and Pods that allow you to easily view all the containers/pods, only those that are running, or only those that are stopped.

Filters for containers and pods

Sorting for Volumes and Images lists

The lists of Volumes and Images have improved and are now have the ability to be sorted by the criteria of your choice. You can for example filter images by their size - which can be convenient when you want to clean up your environment.

Sorting for Volumes and Images

Environment columns on Containers and Pods lists

Podman Desktop is able to work with multiple providers: it could work with multiple container engines and multiple Kubernetes environments too. In order to make it easier to identify the containers and the pods and differentiate them depending on which environment they are running onto, we are introducing a new environment column in the list of Containers and Pods to display a badge.

Environment Column

Better visibility to the containers running in Pods

The list of Pods has been refined to provide easier visibility and access to the containers running within each of them. Each of the containers now have one dot and you can hover each dot to display the info about the container - and if you click on it you'll be able to access the details of the container.

Visibility for containers in Pods

Extension API improvements

The 🦭 Podman Desktop extension API received many improvements, including:

  • Documentation explaining how to create an onboarding workflow for an extension #4837
  • Documented how extensions hook into UI #4633
  • Documented how to implement api client #4636
  • Image checker extension API #4662
  • Added api to register cli updater #5064

Other Notable Enhancements

  • Show container connection type and endpoint #5098
  • Environment column to pods/containers #4583
  • Displaying extension icons in the list of extensions #5101
  • Introduced UI icon image component #5117
  • Added icon to extensionInfo #5089
  • Added encoding option on RunOptions #4942
  • Introduced property for appearance but for now only dark is supported #4887
  • Default table sorting #4860
  • Display notification for completed onboarding in task manager #4811
  • Added purple dot when new content is available in dashboard #4782
  • Argos CI: Introduce Argos CI to track and detect visual regressions on the website
  • Added command palette: add enablement property #4630
  • Added documentation for telemetry and usage data #4618
  • Introduced table component #4545
  • Added ability to abort build image #4538
  • Added support in command palette for category #4531
  • Upgraded flatpak to org.freedesktop.Platform version 23.08 #3968
  • Added open exposed url to pod details #3762

Notable Bug Fixes

  • Fix reconnect to /events if disconnected #4809
  • fix: reset loggerhandlerKey after restarting machine #5168
  • fix: fix: podman machine created with wrong flags #5178
  • fix: avoid to crash if configuration is invalid #5182
  • fix: extension installation checks architecture and os #5191
  • fix: use URL for proxy specification and add validation #4825
  • fix: do not change color and underline of markdown buttons #5138
  • fix: do not reconnect when connection is removed #5131
  • fix: table headers shouldn't allow text selection #5118
  • fix: add style to link #5108
  • fix: launch.json references wrong script #5094
  • fix: don't link to k8s cluster server 5087
  • fix: pass the complete imageInfo to the check function #5069
  • fix: container tabs should match pods #5057
  • fix: revert styling of disabled buttons #5056
  • fix: update current context reactively #5055
  • fix: make ProviderResultPage do not change input values #5030
  • fix: add rowgroup to tables #5005
  • fix: add path prop for route object #4981
  • fix: remove errant hash mark #4971
  • fix: check extension folder contains package.json #4964
  • fix: refactor List UI components #4953
  • fix: succeeded/completed state for Compose onboarding #4947
  • fix: remove flex class from markdown button rendering #4934
  • fix: unable to read wsl version when using chinese as syslang on Windows #4918
  • fix: retain autostart setting #4879
  • fix: use vi.waitUtnil instead of cycles with awaiting promises #4861
  • fix: docker host on windows when executing compose command #4855
  • fix: merged compose deploy to kube page in UI #4827
  • fix: use URL for proxy specification and add validation #4825
  • fix: reconnect to /events if disconnected #4809
  • fix: remove fixed height after patternfly removal #4804
  • fix background colours after patternfly removal #4803
  • fix: report metrics for stopped machines #4787
  • chore: update to docusaurus v3.0.0 #4764
  • chore: drop patternfly #4762
  • fix: avoid to send telemetry usage as this method is called every 5s #4692
  • fix: location of roots.exe in devmode #4654
  • fix: disable create/start container if any port is busy #4637
  • fix: fix setup in build image tests #4625
  • fix: find a free port #4616
  • fix: reduce size of provider cards on the dashboard #4615
  • fix: shorter doc nav section titles #4613
  • fix: report error if container engine action fails in details page #4556
  • fix: remove prev/next bar #4548
  • fix: reduce website footer #4546
  • fix: handle compose format json that is no longer a JSON array object #4540
  • fix: disable push to kind menu item if pushing is in progress #4530
  • fix: check for self signed cert message and use insecure param when editing registry password #4523
  • fix: add autoscroll to summary pages #4504
  • fix: report errors when analyzing extensions #4380
  • fix: allow editing of build containerfile #4471
  • refactor: updated compose onboarding installation #4479
  • refactor: remove compose from the status bar #4492

Documentation

Coming with this new version of 🦭 Podman Desktop, the documentation has been getting the following improvements:

  • Reorganize doc navigation by provider #4558
  • Added vsc runtime dependency for Windows development #5091
  • Show location of lima podman socket #5090
  • Fixed typo in URI for releases #4909
  • Explain how to create an onboarding workflow for an extension #4837
  • Make it possible for lima to provide both #4789
  • Blog post about minikube/sharing images #4735
  • Remove duplicate text from windows troubleshooting #4652
  • Add step to implement api client #4636
  • Fixed the main lima command for limactl #4623
  • Lima provider cleanup after the improvements in the implementation #4622
  • Update documentation regarding auto merge #4519
  • Using standard OS tabs for registries docs #4497
  • Fixed mahine -> machine #4495
  • Added screenshots and fixed formatting to the registries section #4472

Community Thank You

🎉 We’d like to say a big thank you to everyone who helped to make 🦭 Podman Desktop even better. In this release we received pull requests from the following people:


Final notes

Fixed Issues

The complete list of issues fixed in this release is available here.

Where to Download

Get the latest release from the Downloads section of the website and boost your development journey with Podman Desktop. Additionally, visit the GitHub repository and see how you can help us make Podman Desktop better.

Share your local podman images with the Kubernetes cluster

· 8 min read
Florent Benoit
Principal Software Engineer

As developers we constantly improve and refine our applications. One of the challenges we face is quickly iterating when working with container images and kubernetes deployments/pods.

For example, when we want to try a new image in a kubernetes pod, this image needs to be available on a private/public registry or on the nodes of the kubernetes cluster. Sometimes we need to call extra commands such as kind load docker-image or minikube cache add <image> or publish the image first to a 3rd party registry.

You'll agree that trying out a new image in a Kubernetes pod should be as seamless as building the image itself.

In this blog post, we will explore the best practice for streamlining the image iteration process in Kubernetes with Podman Desktop.

hero

Podman Desktop 1.5 Release

· 9 min read
Máirín Duffy
User Experience Designer

Podman Desktop 1.5 Release! 🎉

With this release of Podman Desktop, we're introducing a new onboarding feature that we hope will earn your 🦭 seal of approval! But wait... there's so much more!

  • Onboarding: Guided setup and configuration of Podman and Compose
  • Podman 4.7.2: Podman 4.7.2 is now included in Windows and Mac installers
  • Command Palette: Gain easy access to various commands via a new keyboard-driven command palette
  • Expanded "Summary" tab for Kubernetes pods: Go deep with extended details on Kubernetes pods in the pod "Summary" tab
  • Environment file support: Chart out environment variables for new containers to access on creation
  • Enhancements to the Settings area: Get your bearings with improved Docker compatibility mode controls
  • Improved user experience for state changes: No more dead reckoning on container state with improved visual indication of status
  • Extension API improvements: A boatload of improvements to the extension API enabling more goodness from 🦭 Podman Desktop's extensions

Podman Desktop 1.5 is now available. Click here to download it!

Podman-desktop-1-5-hero


Release Details

Onboarding

We are introducing a new feature providing guided flows for the initial setup of specific 🦭 Podman Desktop extensions. Release 1.5 features two new onboarding flows: Podman and Compose.

To start the Podman onboarding flow, you can start from the dashboard notification by clicking the "Set up" button: podman-onboarding-start podman-onboarding

Visit Settings > Resources screen and click the Compose "Setup ..." button in order to start Compose onboarding: compose-onboarding-start compose-onboarding

Command Palette

A new, search-driven command palette is now available to enable quick access to various commands available across 🦭 Podman Desktop. You can try this new tool out by hitting the F1 key. #4081 && #3979

Expanded "Summary" tab for Kubernetes pods

Kubernetes pods now offer a more comprehensive set of information under the "Summary" tab, including networking, volumes, environment variables, and other key metadata.

Environment file support

When creating a container from the Images list, there's now an option to provide an environment file to set env variables for the new container. #4026 && #4025

Enhancements to the Settings area

The user experience for enabling or disabling Docker compatibility is improved, with a new entry in the Settings > Preferences screen that includes contextual guidance. #4093

Improved user experience for state changes

The user experience around state changes for containers, pods, and other objects in the UI is improved, with clear status messages and improved animated visual indicator of state changes. #4056

Extension API improvements

The 🦭 Podman Desktop extension API received many improvements, including:

  • In addition to pushing and listing image from an extension, it's now possible to pull images from a 🦭 Podman Desktop extension #4155

  • The 🦭 Podman Desktop extension API has been enhanced with both the ability to list images & networks and the ability to create containers & networks. #4172

  • 🦭 Podman Desktop extensions now have a consistent way to run administrative tasks. #4049

  • Extensions now have the ability to register a custom Kubernetes config generator. #3970

  • The ability of extensions to add commands to UI menus has been extended; previously for action menus it was only available in the Image list screen. It is now possible for extensions to add commands to the action menus of items listed on the Containers list screen as well. #3947 & #3963

  • Extensions have gained the ability to contribute menu items in the UI based on specific conditions. #3959

  • Enhanced logic for displaying or hiding properties listed under the Settings > Preferences screens is now available. #4159


Other Notable Enhancements

  • The progress of loading an image into Kind is now visible as a task in the task manager. #4061

kind-progress-task

  • It's now possible to start a new Podman machine right after creation, or you can create it and wait to start it later. It's up to you! #4046

podman-start-now-or-later

  • The Podman machine and Kubernetes provider creation forms have an updated look & feel consisted with other forms in the user interface, along with minor bug fixes. #4317

Updated provider creation forms

  • The empty screen message shown when a search filter results in no matches now provides a message specific to filter matching, including the specific filter terms and an explicit button for clearing the filter. Previously, the screen displayed a generic message about how to create new objects of the type displayed on the screen, which led to some confusion about the status of the system. #3988
  • New support for adding spin animations to icons is now available. #4188

  • There is a new indeterminate progress bar type available for the task manager; this is meant for providing limited status for actions whose APIs do not provide detailed status information. #4016

  • For authenticating as admin to perform administrative tasks, 🦭 Podman Desktop now provides touchID support for macOS. #4050

touchID-support

  • Support for connecting to interactive terminals for containers via tty was added. #3900

  • It's now more clear which container/pod providers will autostart when 🦭 Podman Desktop starts. Previously autostart had both a global and a per-provider setting. It has been simplified by removing the global setting. #3840

  • The "Working with containers" section of the documentation has been reworked and improved. #3951


Notable Bug Fixes

  • The disable registry command was not blocking subsequent pulls from disabled registries. This has been corrected. #4183

  • Some users behind network proxies were unable to complete workflow involving the download of online resources. The mechanism for fetching these resources has been fixed to be proxy compatible to address this issue. #3994

  • The status of pods running in Kubernetes that are undergoing the deletion process is now accurately reflected in the 🦭 Podman Desktop UI. #3877

  • The image details page always listed the image as being "not used" even when it was. This has been corrected. #3985

  • Previously, deleting a specific image tag would cause all tags with the same Image ID to be deleted. This has been fixed so only the selected image tag will be deleted. #3837

  • Could not view the pod details for some remote Kubernetes cluster pods due to an encoding error. #4371

  • Error logs were being tracked separately from the actions they applied to. This has been addressed for kind cluster creation failure #4427 and Compose installation failure #4407.

  • For Linux users, 🦭 Podman Desktop previously did not appear under the "Development" menu when installed via Flatpak; it appeared under "Utilities." 🦭 Podman Desktop now appears under the "Development" menu. #3911

  • Podman Machine names are no longer prefixed with the "Podman Machine" string. #3878

touchID-support

  • The initial action state of pods and containers was being displayed as "STARTING" regardless of actual state; this has been corrected. #3889

  • Resizing the application window no longer makes the last lines of a container's terminal invisible. #3993

  • An issue with incorrect terminal behavior in response to long lines in the terminal attached to a container has been resolved. #3955

  • A spacing issue on the run image form has been corrected. #4089

  • The "podify" icon & button on the Containers list was unusually large in release 1.4. That regression has been corrected in this release. #4122

  • An error in the instructions for Windows users on migrating from Docker has been corrected. #4157


Community Thank You

🎉 We’d like to say a big thank you to everyone who helped to make 🦭 Podman Desktop even better. In this release we received pull requests from the following people:


Final notes

Known Issues

We have a discussion board topic where we have posted known issues with this release. If you run into problems, please check this list before filing a bug - if we already have an issue open for it, it saves you the time and trouble of filing, and there may be a workaround posted in the issue.

Known Issues: Podman Desktop 1.5.2

Fixed Issues

The complete list of issues fixed in this release is available here.

Where to Download

Get the latest release from the Downloads section of the website and boost your development journey with Podman Desktop. Additionally, visit the GitHub repository and see how you can help us make Podman Desktop better.

Podman Desktop 1.4 Release

· 4 min read
Jeff Maury
Engineering Manager

Podman Desktop 1.4 Release! 🎉

This is essentially a bug-fix release to fix various issues in UI, but as usual we also added a few new features.

  • Podman 4.6.2: Podman 4.6.2 included with Podman Desktop 1.4
  • Windows Arm64: Native Windows on Arm64 installers and binaries
  • Port range mapping: Start containers and map a range of ports
  • Terminal UX Improvement: Persistent terminal sessions when SSH'ing in a container
  • Volume Creation: Create volume from the Volumes page
  • Bash support: Terminals are now using bash if available.

Podman Desktop 1.4 is now available. Click here to download it!

Podman-desktop-1-4-juggling


Release Details

Port range mapping #3654

When starting a new container, you can now map a port range between host and container. If the range is not valid between host and container, an error is raised.

Range mapping

Terminal lifetime #3725

When a terminal is opened for a container, it can now be reused after you switched to another part of the Podman Desktop UI.

terminal lifetime

Create volume #3742

The Volumes tab now has a Create volume button. The Create volume UI has a single field for the volume name.

create volume

bash support #3750

When a terminal is opened for a container, if bash is available within the container, it will be used. Otherwise, sh will be used.

bash sh

Notable Bug Fixes

  • Reduce API calls when listing containers by @benoitf #3489
  • Removing a connection(podman machine) should redirect to previous page by @benoitf #3576
  • Enhance error message when image is not there by @benoitf #3587
  • Dispose kind install button when extension is deactivated (#3586) by @lstocchi #3610
  • Replace backslash/slash on windows when building image (#3465) by @lstocchi #3618
  • Handle null value in container command (#3620) by @lstocchi #3625
  • Add maximum activation time for extensions by @benoitf #3446
  • Handle single non-spread arguments by @benoitf #3641
  • Grab usage data of volumes only on-demand by @benoitf #3635
  • Add arm64 binaries for Windows by @benoitf #3643
  • Include right airgap file for Windows and arm64 by @benoitf #3651
  • Redirect to previous page when removing a kubernetes connection by @benoitf #3650
  • Support port ranges when starting a container (#3204) by @lstocchi #3654
  • Add a strict undefined check to messagebox result (#3692) by @lstocchi #3699
  • Only restart if a machine is running by @cdrage #3491
  • Session to the terminal is reused by @benoitf #3725
  • Disable next button and show try again when onboarding failed (#3616) by @lstocchi #3711
  • Add podman in PATH after updating process environment PATH (#3729) by @lstocchi #3730
  • Allow to create a volume by @benoitf #3742
  • Using bash if available otherwise sh in terminal by @axel7083 #3750
  • Allow to embed existing component to onboarding (#3755) by @lstocchi #3763
  • Some containers never return logs, do not wait for them by @dgolovin #3784
  • Remove cancel button when on final onboarding step (#3771) by @lstocchi #3802
  • Onboarding add link micromark for commands by @cdrage #3747
  • Mounts can be null when using older podman by @afbjorklund #3806
  • Remove redundant step completion check when onboarding gets started by @lstocchi #3798
  • Ability to click enter in pull image name input by @deboer-tim #3850
  • Set proxy environment variable when launching process by @jeffmaury #3838
  • The socket location was moved for new podman by @afbjorklund #3853
  • Don't log console errors when activating lima extension by @afbjorklund #3852

Community Thank You

🎉 We’d like to say a big thank you to everyone who helped to make Podman Desktop even better.

A warm welcome to @tomgoren, @Julian, @Gelob and @cedricclyburn who made their first contribution to the project in this release.

Final Notes

The complete list of issues fixed in this release is available here.

Get the latest release from the Downloads section of the website and boost your development journey with Podman Desktop. Additionally, visit the GitHub repository and see how you can help us make Podman Desktop better.

Podman Desktop 1.3 Release

· 6 min read
Denis Golovin
Principal Software Engineer

Podman Desktop 1.3 Release! 🎉

This is essentially a bug-fix release to fix various issues in UI, extension engine and featured extensions, but as usual we also added a few new features.

  • Podman 4.6.1: Podman 4.6.1 included in Windows and Mac installers
  • Podman user-mode networking support to Windows/WSL: A new switch `User mode networking' is available when creating Podman machine on Windows for Podman 4.6.0+ to configure podman to work in certain VPN setups and other specialized networking configurations
  • Compose group new UI elements: You can now see summary, inspect, deploy to kubernetes, generate kube yaml and view logs
  • Extension packs and extension dependencies: Install group of extensions in one click
  • Resource details page update: See summary and log for resource
  • Create Kind cluster form update: A new Node's container image field can be used to specify the Kubernetes version used for the control-planed
  • Support Docker Desktop extensions using a backend: When loading Docker Desktop extension the containers are created in the backend as described in the vm section of extension's descriptor
  • Podman Initial Onboarding (preview): Install and configure podman using included installer

Podman Desktop 1.3 is now available. Click here to download it!

Podman-desktop-1-3-bug-swatting


Release Details

Compose group Logs tab #3176

When clicking on the group of containers, you can now view the logs of the entire group of compose containers and don't need to open log for every component individually.

Screenshot 2023-07-11 at 12 48 47 PM

Podman user-mode networking support to Windows/WSL #3251

Certain VPN setups or other specialized networking configs will block traffic from the virtual WSL networking device, resulting in the podman WSL backend from being unable to contact systems on the VPN, and potentially losing internet access altogether. The new switch allows you to create a podman VM machine configured to work correctly in mentioned above networking environments.

user

Compose group Summary tab #3317

Compose group Summary tab shows all containers in the group and let you navigate to Details page for specific container.

Compose group Inspect tab #3316

Compose group Inspect tab shows an array of "container inspect" from docker / podman.

Deploy to kubernetes in compose actions #3299

A button to deploy to kubernetes added to Compose group.

Generate Kube in Compose actions and Kube tab in compose details #3253

Generate Kube item added to Compose actions and "Kube" tab is now available in Compose details view.

Install multiple extensions using extension pack #3150

An Extension pack introduced in Extension engine is a way to declare set of extensions to install them all at once.

Customize icons from extension #3131

Extensions now can customize icons for list elements using when clause.

image

Resource details page update #1923

If you click on the arrow icon next to a resource name it will open up a details page (similarly to how clicking on a container in the container list opens up a details page).

image

Node's container image field added to Create a Kind cluster form #3508

The new Node's container image field can be used to specify the Kubernetes version used for the control-planed.

image

Support Docker Desktop extensions using a backend #3435

Podman Desktop now loads the containers in the backend as described in the vm section of extension descriptor the same way as Docker Desktop does.

Initial onboarding implementation for podman (experimental) #3308

This is the initial implementation for the onboarding feature. It only covers a simple onboarding for podman. Check system requirements -> install podman -> yay! Done!

Notable Bug Fixes

  • Updating videos to be adaptive for mobile by @mairin #3229
  • Consistent max width and padding in settings by @deboer-tim #3232
  • Settings navigation bar resizing by @deboer-tim in #3231
  • Move new registry button to header by @deboer-tim #3245
  • Bigger lima logo by @afbjorklund #3248
  • Horizontal docker logo by @afbjorklund #3236
  • Respect LIMA_HOME environment variable by @afbjorklund #3254
  • Add check before writing to terminal by @lstocchi #3263
  • Wait until remote side has fully initialized the extensions by @benoitf #3257
  • Fix loader not centered horizontally by @benoitf #3270
  • Troubleshooting still waiting after failure by @deboer-tim #3354
  • Store error for build by @cdrage #3365
  • Missing checkbox tooltips by @deboer-tim #3380
  • Load compose logs async not await by @cdrage #3377
  • Set rootful connection when starting rootful machine by @lstocchi #3364
  • Default last page by @deboer-tim #3388
  • Avoid dashboard displaying providers starting while they don't by @benoitf #3451
  • Do not use extensionInfo until it is defined by @benoitf #V
  • Allow BASIC authentication (all caps) by @cdrage #3471
  • Allow single domain registry such as localhost:5000 by @cdrage #3468
  • Create /usr/local/bin directory if it does not exist on binary install by @cdrage #3425
  • Only delete selected pods by @deboer-tim #
  • Add back 'Done' text on the button by @benoitf #3487
  • Do not wait for more than 5s when checking for podman ping by @benoitf #3497
  • Add proxy support for extension using patching get and request approach by @dgolovin #2825
  • Refresh component when field is updated by @benoitf #3525
  • Higher-res icons for featured extensions list by @mairin #3511
  • Main nav selection by @deboer-tim #3510
  • kube event error when switching context by @jeffmaury #3494
  • Reset error message each time we pull image by @benoitf #3550

Community Thank You

🎉 We’d like to say a big thank you to everyone who helped to make Podman Desktop even better.

A warm welcome to @rostalan and @axel7083 who made their first contribution to the project in this release.

Final Notes

The complete list of issues fixed in this release is available here.

Get the latest release from the Downloads section of the website and boost your development journey with Podman Desktop. Additionally, visit the GitHub repository and see how you can help us make Podman Desktop better.

Podman Desktop 1.2 Release

· 7 min read
Charlie Drage
Software Engineer

Podman Desktop 1.2 Release! 🎉

We're excited to announce the release of Podman Desktop version 1.2.0! This release includes many new features (Kubernetes, Compose and extension support!), bug fixes, and improvements to enhance your container management experience. Here's a summary of the key changes in this release:

  • Added start/stop/delete/restart buttons for Compose: You can now make changes to an entire Compose group of containers
  • Kubernetes context on the status bar: Choose from multiple Kubernetes contexts more easily all from the status bar
  • Rename images: Rename an image with a click of a button
  • Protocol handler support: Added support for protocol handlers such as open podman-desktop:extension/redhat.openshift-local
  • Troubleshooting page: A troubleshooting page for helping diagnose Podman Desktop related development issues

Podman Desktop 1.2 is now available. Click here to download it!

Podman-desktop-1-2-hero


Release Details

Added start/stop/delete/restart buttons for Compose

In the last month we've been addind support for more Compose features. Before you were only able to control a group of containers if they were in a Pod. Now we have added the ability to control a group of Compose containers. You can now start, stop, delete and restart a group of containers launched by either docker-compose or podman-compose.

Stay tuned as we add even more features to Compose! If you have any feedback or feature requests, feel free to open an issue or start a discussion on GitHub.

Kubernetes context on the status bar

With Kubernetes context on the status bar, you can switch from one context to another in just a couple of clicks. Easily switch to a different cluster all together. If there are multiple contexts available, you can now click and pick which one to use.

Rename images

Deployed an image but now you need to rename it / add a new tag? Podman Desktop allows you to edit an image now. Thanks to an awesome contributor @tuckerrc who added the new feature.

Troubleshooting page

Developing an extension for Podman Desktop? Want to view the logs of Podman Desktop as well as ping your container connection? We now have a troubleshooting page!

Click on the lightbulb button on the bottom right to access the page.

Protocol handler support

Podman Desktop now supports protocol handling when using the terminal! Want to access your favourite extension directly from a script or the terminal? If you type in open podman-desktop:extension/redhat.openshift-local in the terminal, Podman Desktop will automatically load up to the correct extension.


Other Notable Features

  • Background colors and FormPage (PR #2977)
  • Add ability to add insecure registry / skipping cert verify (PR #2896)
  • Add support for icon contribution (PR #2984)
  • Add warning dialog message that virtual machine has low memory limit (PR #2822)
  • Propose indexed name for new pod (PR #3028)
  • Add restart button after enabling / disabling mac os compatibility (PR #2841)
  • Add environment related helper constants (PR #3079)
  • Allow entrypoint and cmd when starting container (PR #3031)
  • Add a way to debug stores in troubleshooting page (PR #3121)
  • Add custompick component (#2855) (PR #3012)
  • Dynamic breadcrumbs (PR #3119)
  • Icons on form pages (PR #3155)
  • Switch more pages to formpage (PR #3162)
  • Add rename image button (PR #2588)
  • Fixed headers, improved scrollbars (PR #2863)
  • Reports warnings on failed kube deploy, fixes error out (PR #3050)
  • Kube context on statusbar (PR #2755)
  • Install provider if not installed when clicking on create new button (#2706) (PR #2817)
  • Add tag and authenticated push capacity to the extension API (PR #2876)
  • Add navigation bar e2e tests (PR #2950)

Documentation Updates

  • Fix documentation for building image of extensions (PR #2873)
  • Add Minikube install docs (PR #2824)
  • Add Minikube documentation (PR #2694)
  • Updated Building an image procedure (PR #2964)
  • Starting a container (PR #2958)
  • Pulling an image (PR #2956)
  • Updated selecting containers to run in a pod (PR #2970)
  • Pushing an image to a registry (PR #2969)
  • How to add an insecure registry (PR #2953)
  • Add documentation for lima (PR #2995)
  • Replace broken link to podman.io (PR #2994)
  • Authenticating to a pre-configured registry (PR #2965)
  • Lima is not a container engine (PR #3051)
  • Using the Troubleshooting page (PR #3083)
  • View and select your current Kubernetes context in the status bar (PR #3090)

Notable Bug Fixes

  • Deleting a running pod generates an error (PR #2827)
  • If kubeconfig is empty, does not try to do things, cancel (PR #2874)
  • Async telemetry startup (PR #2885)
  • Do not block startup while waiting for kube resource refresh (PR #2884)
  • Images list too wide (PR #2918)
  • Compose deactivate function never called (PR #2922)
  • Auto-scrolling on form pages, layout issues (PR #2927)
  • Show current context in quick pick (PR #2920)
  • Remove sticky position of loader in dashboard UI (#2535) (PR #2959)
  • Undo change that broke the website (PR #2992)
  • Detailspage, resizing & consistency (PR #2987)
  • Quick pick click to close and over nav bar (PR #2758)
  • Only show empty screen when no pods (PR #2929)
  • Do not redirect to /pods when deleting pod in containerlist (PR #2963)
  • Bulk delete on pods should call the pod deletion (PR #2979)
  • Update nodejs version to 18 in .nvmrc to fix yarn install failure (PR #2989)
  • Website check targets (PR #2996)
  • Don't show exception to user (PR #3034)
  • Interpret arguments given to info command for example (PR #3015)
  • Change defaults for Podman machine (PR #3061)
  • Normalize development/production folders path (PR #3113)
  • Calculate machine socket path for linux (PR #3070)
  • Replace backslash with slash so to support rendering on Windows (#3120) (PR #3122)
  • Keep stdout and stderr in the error object for Docker Desktop extensions (PR #3014)
  • Mark task completed if there's a failure (PR #3016)
  • Handle invalid kubeconfig file (PR #3129)
  • Do not remove registries when podman extension is stopping (PR #3136)
  • Warning should be amber (PR #3153)
  • Load user extensions from plugins as removable (PR #3152)
  • Images with spaces in entrypoints or commands fail to start (PR #3161)
  • Scrolling offscreen when clicking checkbox (PR #3178)
  • Avoid messagebox expanding offscreen (PR #2778)
  • Release-notes-generator run failure (PR #2752)
  • Unable to do a new build if the previous one failed (PR #2721)

Community Thank You

🎉 We’d like to say a big thank you to everyone who helped to make Podman Desktop even better.

A big shoutout to @afbjorklund, @tuckerrc and @evanshortiss who contributed to this release!


Final notes

The complete list of issues fixed in this release is available here and here.

Get the latest release from the Downloads section of the website and boost your development journey with Podman Desktop. Additionally, visit the GitHub repository and see how you can help us make Podman Desktop better.

Podman Desktop 1.1 Release

· 3 min read
Tim deBoer
Architect

Podman Desktop 1.1 Release! 🎉

This is primarily a bug-fix release to fix a few important issues, but we've managed to squeeze in a few enhancements along the way.

  • Podman 4.5.1: Podman 4.5.1 now included in Windows and Mac installers.
  • Extensions: Update extensions from within Podman Desktop.
  • Lima Support: Choose engine type and override its name from the settings.
  • UX and UI Improvements: New loading screen.

Podman Desktop 1.1 is now available. Click here to download it!

Podman-desktop-1-1-hero

Podman Desktop 1.0 Release

· 5 min read
Tim deBoer
Architect

Podman Desktop 1.0 Release! 🎉

We still have many things planned, but with a little polish and a few more bug fixes we felt we've reached a level of maturity and it is now time to declare our 1.0 release.

Thank you to everyone who has been with us on this journey so far! Please keep the feedback coming!

  • Highlighting Featured Extensions: Easily find and install new extensions.
  • Featured Extensions: Two new extensions supporting OpenShift.
  • Podman Machine as Root: Ability to run a Podman machine as root.
  • UX and UI Improvements: Opening external websites, editing numbers, and tooltips.

Podman Desktop 1.0 is now available. Click here to download it!

Podman-desktop-1-0-hero

Release Notes - Podman Desktop 0.15

· 4 min read
Tim deBoer
Architect

Podman Desktop 0.15 - Cleanliness is next to Podliness!

It has only been two weeks since our last release, but we really wanted to complete a few scenarios, fix a few bugs, and show off several design updates and UI improvements that we have been working on.

  • Podman Version: Podman 4.5 now included in Windows and Mac installers.
  • Kind Ingress: Creating an ingress to expose services outside the Kind cluster.
  • Podliness: Ability to choose external ports when podifying containers.
  • Cleanliness: New navigation bar, dialog, and palette update.
  • UX and UI Improvements: Markdown support for extensions.

Podman Desktop 0.15 is now available. Click here to download it!

Podman-desktop-0-15-hero

Setting up and running a Kubernetes cluster locally with Podman Desktop

· 9 min read
Fabrice Flore-Thebault
Technical writer

In this blog post you will learn to use Podman Desktop to run the Kubernetes documentation example: Deploying PHP Guestbook application with Redis.

On the agenda:

  1. Installing Podman Desktop.
  2. Installing and initializing your container engine: Podman.
  3. Installing and starting your local Kubernetes provider: Kind.
  4. Starting the Redis leader.
  5. Starting and scaling the Redis followers.
  6. Starting and exposing the Guestbook frontend.

Release Notes - Podman Desktop 0.14

· 5 min read
Tim deBoer
Architect

Podman Desktop 0.14 - Our Kind-est release yet!

We have been working on a Kind extension for a while now, and decided it is time to promote it into a release just in time for KubeCon and CloudNativeCon Europe!

We're especially excited about releasing Kind because it finally shows the full purpose of Podman Desktop: not just local container engines, but Kubernetes too. More importantly, providing tools that allow you to manage both environments and seamlessly move between them.

Some of these features were available in development mode over the last few releases, but since they are now in the release build, we will do a full roundup and talk about all the Kind features.

  • Kind Installation: Install Kind from the status bar
  • Manage Kind Clusters: Create and manage Kind clusters from Settings > Resources
  • Using Kind: Deploying YAML and sharing images to a cluster
  • Kind Ingress: Install a Contour ingress controller
  • UX and UI Improvements: Updated preferences and telemetry prompt

Podman Desktop 0.14 is now available. Click here to download it!

Podman-desktop-0-14-hero

Release Notes - Podman Desktop 0.13

· 4 min read
Tim deBoer
Architect

This release note covers Podman Desktop 0.13 release changes.

  • Podman Version: Podman 4.4.4 now included in Windows and Mac installers.
  • Compose: Support for installing Docker Compose.
  • Extensions: Improved extension support for Podman Desktop with additional capabilities.
  • UX and UI Improvements: Welcome page, task manager, resources, and update alerts.

Podman Desktop 0.13 is now available. Click here to download it!

Podman-desktop-0-13-hero

5 things to know about Podman Desktop for a Docker user

· 5 min read
Florent Benoit
Principal Software Engineer

The 5 things to know being a Docker user by using Podman Desktop:

  • Use a single UI: Podman Desktop works with several container engines, including Docker.
  • The compatibility mode: How to ensure tools are working with Podman instead of Docker.
  • Compose support: How to work with Compose files and Podman.
  • Kubernetes support: How to use Kubernetes with Podman.
  • Security: Use rootless mode or containers without root privileges.

5-things-to-know-for-a-docker-user-hero

Release Notes - Podman Desktop 0.12

· 5 min read
Stevan Le Meur
Product Manager

This release note covers Podman Desktop 0.12 release changes.

  • Podman Version: Podman 4.4.1 now included in Windows and Mac installers.
  • Containers Configuration: Configure port mappings for an image without exported ports.
  • Windows Home Support: Podman Desktop now supports Windows Home Edition.
  • Start minimized: Option to start Podman Desktop minimized to system tray.
  • UX and UI Improvements: Consistent actions, placeholder for logs, unified icons and others.

Podman Desktop 0.12 is now available. Click here to download it!

podman-desktop-0-12-hero

Release Notes - Podman Desktop 0.11

· 10 min read
Stevan Le Meur
Product Manager

This release note covers Podman Desktop 0.11 release changes.

  • Air-Gapped Installation: New all-in-one binaries for air-gapped installation.
  • Feedback: Submit feedback directly from Podman Desktop.
  • Docker Compatibility Mode: Information about the Docker compatibility mode.
  • Proxy Setting: Toggle on/off the proxy setting.
  • Deploy to Kubernetes: Select the namespace to deploy to Kubernetes.
  • Registry Configuration: Simplified registry configuration for well known registries.
  • UX/UI Improvements: View pod's container logs, better visual feedback, configurable editor font size, and more.

Podman Desktop 0.11 is now available. Click here to download it!

Release Notes - Podman Desktop 0.10

· 5 min read
Dev Kumar
Technical PMM Intern

This release note covers Podman Desktop 0.10 release changes.

  • Containers Configuration: Container creation wizzard allowing to define environment variables, networking and more configuration options.
  • Kubernetes Improvements: Play Kubernetes YAML, custom Kubeconfig path support, reload of kube context.
  • Registries Configuration: Revamped registries configuration UI.
  • Podman Version: Podman 4.3.1 now included in Windows and Mac installers.
  • UX/UI Improvements: Improved lists, better contrast, and more.

Podman Desktop 0.10 is now available. Click here to download it!

Build & run Podman Desktop in a DevContainer

· 8 min read
Florent Benoit
Principal Software Engineer

GitHub announced last week that Codespaces is available for everyone and it includes free minutes.

Let see how we can use a Development Container having all the tools to build and run Podman Desktop. The Development Container works locally using Visual Studio Code but in this blog post we will see how it works directly with a simple click from GitHub.

The challenges are to run a desktop tool (Podman Desktop) and running a container engine (Podman) inside this Development Container without using too many memory !