The super duper
Container Desktop
Podman Desktop Companion

A cross-platform desktop UI made by the podman team itself, is available at Podman Desktop

A familiar desktop graphical interface for the free and open container manager - Podman!

Getting started with podman   Podman releases and downloads

Publications


Guides & tutorials

(Bring your own container engine)

Guides

  1. Quick guide
  2. Podman acting as Docker
  3. Docker Desktop alternative
  4. Sharing connection with Container Desktop

Requirements

Linux offers the best experience and fastest speed when working with containers. Besides from avoiding the need for virtualization, when we develop, we usually target Linux for production purposes. The file-system speed and permissions don't fit good when not using something made for Linux. Although there is love for all operating systems, Linux is really shining here.

Examples are following Ubuntu distribution but can easily be adapted to any distribution.

1. Quick guide

Install requirements

Update your system

sudo apt-get update -y && sudo apt-get upgrade -y

Install development tools

sudo apt-get install -y build-essential
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

Install docker container engine - this does not install Docker Desktop

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update -y
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker ${USER} # Close and restart your terminal after adding your user to the docker group
sudo systemctl enable docker # To start docker on boot
sudo systemctl restart docker # To start docker now
sudo systemctl is-active docker # To check if docker is running
docker run hello-world # This to test the installation - docker cli must be able to run without sudo at this point

Install podman container engine and podman-compose

sudo apt-get install -y podman podman-compose

Distributions usually have very old podman versions, for more recent versions, use Alvistack project that provides repositories for most of the linux flavors.

Open Container Desktop
Connect to System Podman or System Docker default connection and all should work.

2. Podman acting as Docker

This is referred to as Compatibility Mode - it should support all docker features, except the docker cli, in this case podman should be used instead. You can alias that if you want.

Start podman api listening to /var/run/docker.sock
export DOCKER_HOST=/var/run/docker.sock
podman system service --time=0 unix://${DOCKER_HOST} --log-level=debug

After this point, one can use podman or docker or any other tool that uses the socket.

3. Docker Desktop alternative

This is so easy
Follow the Quick guide to support both docker and/or podman, or just skip the podman part and focus on docker only.

4. Sharing connection with Container Desktop

Allowing podman and docker CLIs to use the same connection that Container Desktop is using
The DOCKER_HOST environment variable must be set and it has to have the same value that Container Desktop is using, when connected.
The exact value can be found under Connection info screen of the Settings section.

Guides

  1. Quick guide
  2. Podman and Docker - best experience
  3. Podman acting as Docker
  4. Docker Desktop alternative
  5. Sharing connection with Container Desktop

Requirements

On MacOS, virtualization is required to support both docker and podman container engines. Also homebrew is seriously recommended to simplify the user experience with provisioning and setup. Due to high cost, at this moment, Container Desktop does not afford the subscription to be able to digitally sign applications, neither buying a digital certificate which is even more expensive.

As non-administrator user

Install homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew update
brew upgrade

1. Quick guide

Install colima
brew install colima
Start colima VM
colima start
Install docker command line tools
brew install docker - this does not install Docker Desktop
Download and install Container Desktop for MacOS, then due to missing digital signature, allow it to run using
xattr -d com.apple.quarantine /Applications/Container\ Desktop.app
Open Container Desktop
Connect to System Docker default connection and all should work.

2. Podman and Docker - best experience

Install lima from https://lima-vm.io/ - LIMA uses MacOS native virtualization to provide linux environments, it is like WSL, but for MacOS.
brew install lima
Start VM for podman
limactl start podman
Login to podman VM
limactl shell podman
Start VM for docker
limactl start docker
Login to docker VM
limactl shell docker

3. Podman acting as Docker

This is referred to as Compatibility Mode - it should support all docker features, except the docker cli, in this case podman should be used instead. You can alias that if you want.

Latest and greatest
Go to the Podman releases downloads page and download and install the latest MacOS pkg file for your CPU.
Please consider the following
  • Upon installation, podman will create its own VM also know as Podman Machine
  • Aside from this, it will also set the DOCKER_HOST environment variable to point to the podman unix socket. This makes it easy for the docker cli to just use it.
Easiest (skip if using latest and greatest)
brew install podman

4. Docker Desktop alternative

Using colima, prepare a Linux VM with backed-in docker support
Open a terminal and run the following
brew install colima
Start the colima VM
colima start
Adding support for native docker binary
brew install docker - this does not install Docker Desktop
Latest docker CLI binaries can also be found at

5. Sharing connection with Container Desktop

Allowing podman and docker CLIs to use the same connection that Container Desktop is using
The DOCKER_HOST environment variable must be set and it has to have the same value that Container Desktop is using, when connected.
The exact value can be found under Connection info screen of the Settings section.

Guides

  1. Quick guide
  2. Podman and Docker - best experience
  3. Podman acting as Docker
  4. Docker Desktop alternative
  5. Podman - custom installation
  6. Sharing connection with Container Desktop
  7. Tips & tricks

Requirements

On Windows, virtualization is required to support both podman and docker container engines. With the introduction of WSL, the development experience has evolved. It is highly recommended to move away from msys/cygwin and just use WSL. Most of the times we deploy on Linux anyway, so it is appropriate to have an experience closer to reality. It also gives one a good opportunity to learn Linux.

As non-administrator user
winget install -e --id=Microsoft.WindowsTerminal
winget install "Container Desktop"
Enable and install Windows Subsystem for Linux (WSL) as administrator
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
winget install -e --id=Microsoft.WSL

Restart the computer and then set-up the WSL distribution user account by starting wsl.exe in a Windows Terminal

1. Quick guide

Enable and install Windows Subsystem for Linux (WSL) as administrator
winget install -e --id=Microsoft.WSL
  • This will install the default Ubuntu distribution, which is fine for most users - Ubuntu-24.04 is the latest at the time of writing.
  • It will also install a profile to it inside Windows Terminal, which is a great terminal emulator for Windows.
  • After you set-up your linux user, using a Windows Terminal inside the WSL distribution, follow the Linux installation guide to install docker and/or podman container engines.
If WSL is already installed, make sure it is up to date and set to version 2
wsl --update
wsl --set-default-version 2
As non-administrator user
winget install -e --id=Microsoft.WindowsTerminal
winget install -e --id=Docker.DockerCLI
winget install -e --id=RedHat.Podman
winget install "Container Desktop"
Open Container Desktop
Create an automatic connection to your WSL distribution, using either docker or podman engines. If you want, choose and make the one you prefer, default and click Connect button.

2. Podman and Docker best experience

Requirements
Ensure all requirements are installed as per the requirements guide
Custom WSL
Inside the WSL distribution, follow the Linux installation guide to install both podman and docker container engines.
Best developer experience
Perform all container operations inside the WSL distribution directly, it is just Linux in the end. WSL is the best way to run Linux on Windows.

3. Podman acting as Docker

This is referred to as Compatibility Mode - it should support all docker features, except the docker cli, in this case podman should be used instead. You can alias that if you want.

Latest and greatest
Go to the Podman releases downloads page and get the latest Windows installer.
Please consider the following
  • Upon installation, podman will create its own WSL distribution also known as Podman Machine
  • Aside from this, it will also set the DOCKER_HOST environment variable to point to the podman named pipe
Easiest (skip if using latest and greatest)
winget install -e --id=RedHat.Podman

4. Docker Desktop alternative

Requirements
Ensure all requirements are installed as per the requirements guide
Add docker engine support
Inside the WSL distribution, follow the Linux installation guide to install docker container engine.
Adding support for native docker.exe binary
winget install -e --id=Docker.DockerCLI
A restart of your terminal is recommended after the installation of the CLI tools.
Latest docker.exe CLI binaries can also be found at

5. Podman - custom installation

Podman engine setup inside WSL
Inside the WSL distribution, follow the Linux installation guide to install podman container engine.
Container Desktop
Open Container Desktop UI and create a new Podman engine connection using the WSL host and select your distribution of choice.

6. Sharing connection with Container Desktop

Allowing podman and docker CLIs to use the same connection that Container Desktop is using
The DOCKER_HOST environment variable must be set and it has to have the same value that Container Desktop is using, when connected.
The exact value can be found under Connection info screen of the Settings section.

7. Tips & tricks

Tips
  1. To ensure WSL version 2 is set wsl --set-default-version 2
  2. To ensure the recommended cgroups v2 - modify or create .wslconfig file in %USERPROFILE% directory, with the following:
    [wsl2]
    # ...
    kernelCommandLine = ipv6.disable=1 cgroup_no_v1=all
  3. Although possible, it is not required to install the Container Desktop application inside WSL

After modify/create, stop WSL engine using wsl.exe --shutdown and then restart with wsl.exe


What is Container Desktop

Cross-platform desktop integrated application with consistent UI

Container Desktop works on Windows, Mac and Linux providing the same graphical interface.

Learning tool for the powerful podman command line interface

Container Desktop is great for skills improvement and learning features of 'podman'.

Essentials at your fingertips

The dashboard offers just the essential features so that the users can feel right at home.
See below what you can manage with Container Desktop.

Cross Platform

  • Application looks the same everywhere, no mental mapping!
  • Completely informs its users of where it stores logs and settings.
  • Allows users to debug and understand what is happening behind the scenes.

Multiple engines

  • Fast native on Linux only
  • Virtualized for any OS
  • LIMA for MacOS
  • WSL for Windows
  • Both podman and docker engines
  • Others are planned

Containers

  • Be informed about the origin and status of your container environment.
  • Quickly access logs, environment variables, mounts, opened ports and monitoring stats.
  • Perform common maintenance operations, stop, restart and remove easily.
  • Direct access to the exposed services using your browser.
  • Gain control of all that happens in the container using the terminal console.

Images

  • Be informed about the origin and status of local image store, their registry, name and tag.
  • Immediately spawn new containers from image, customize name, port mappings and available mounts.
  • Quickly access image build-up, check their impact and debug their setup.
  • In-depth configuration viewer.
  • Perform common maintenance operations, pull latest updates to refresh the images, push latest changes to a distributed image project.

Security

  • In-depth awareness of security checks
  • Be informed of known vulnerabilities
  • Helps creating and maintaining secure systems

Networks

  • Create and reuse networks at any moment.
  • Know detailed setup of each network

Pods

  • Full power of pods on supported engines
  • Access logs, processes and details.
  • Generate kube and perform common actions

Machines

  • Manage all available podman virtual machines, create new ones or decommission what is redundant.

Secrets

Be aware of all available secrets, define new ones or purge old from existence.

Volumes

Manage shared volumes across containers, limit repetition and also be portable.

Super efficient UX

No popups to annoy you, in-depth details only when needed.