Show HN: Container Desktop – Podman Desktop Companion
Container Desktop

        
        
           Linux
          Guides
          
            Quick guide
            Podman acting as Docker
            Docker Desktop alternative
            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.
            
          
        
        
        
           Mac
          Guides
          
            Quick guide
            Podman and Docker - best experience
            Podman acting as Docker
            Docker Desktop alternative
            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
              
                Apple CPUs - https://download.docker.com/mac/static/stable/aarch64/
                Intel CPUs - https://download.docker.com/mac/static/stable/x86_64/
              
            
          
           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.
            
          
        
        
        
           Windows
          Guides
          
            Quick guide
            Podman and Docker - best experience
            Podman acting as Docker
            Docker Desktop alternative
            Podman - custom installation
            Sharing connection with Container Desktop
            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
              
                Intel CPUs - https://download.docker.com/win/static/stable/x86_64/
              
            
          
           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
            
              
                To ensure WSL version 2 is set wsl --set-default-version 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
                
                
                  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
        
      
    
      
        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.
      
      
      
    
  