Setup Podman on Windows

Linh Ngo
4 min readDec 24, 2020

--

Podman is a new (first released in 2018) alternative to Docker for executing containers. Developed by RedHat, Podman requires no running background process to support container operations, and since it adheres to the Open Container Initiative (OCI), it can manage all existing Docker-based images. In this article, I describe the steps in the process to setup Podman to run on Windows Linux kernel subsystem.

These steps have been tested on the following minimal laptop configuration:

  • Intel Celeron CPU N3550
  • 4GB memory
  • Windows 10 Home version 20H2

Setup Windows Linux kernel subsystem

There have been numerous guides, including Microsoft’s official guide on how carry out this task. They can be summarized as follows:

  • Launch Run the following commands in the terminal:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
$ wsl --set-default-version 2
  • Open Microsoft Store and search for Linux.
  • We will use Ubuntu 20.04 LTS distro.
  • Select Ubuntu 20.04 LTS and click Install.
  • After finish, click Launch.
  • The initial setup will ask you to enter a Linux username and a root password for this distribution.
  • Relaunch your Windows terminal, and you will see Ubuntu 20.04 available as one of the possible shell options in the dropbox box.
  • In a normal PowerShell shell of Windows terminal, you can check that your Linux subsystem is installed and running by executing
wsl --list --verbose

Setup Podman

  • Launch a Ubuntu-20.04 shell in Windows Terminal.
  • Run the following commands (check your typing carefully!). A $ sign represents the shell prompt of a new command line.
$ cd$ . /etc/os-release$ sudo sh -c "echo 'deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list"$ curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -$ sudo apt-get update -qq$ sudo apt-get -qq -y install podman$ sudo mkdir -p /etc/containers$ echo -e "[registries.search]\nregistries = ['docker.io','quay.io']" | sudo tee /etc/containers/registries.conf$ sudo cp /usr/share/containers/containers.conf /etc/containers/
  • Open the file /ect/containers/containers.conf using your favorite editor . You will need to run the command with sudo.
  • Find the options for cgroup_manager and events_logger (they will be commented out), uncomment, and change them to the followings:
cgroup_manager = "cgroupfs"
events_logger = "file"
  • Now you can test the operation of podman by first run:
$ podman info
  • The resulting output should give detailed information about your machine and the Linux subsystem being used to run podman.
  • First, we will use podman to run the Hello World container from docker.io.
$ podman run hello-world
$ podman image ls
  • You should be able to observe how the hello-world image is pulled from docker.io and run, and how the image remains in your computer image repository afterward.
  • Next, we will attempt to launch an nginx webserver inside podman and see how we can view the server from the Windows host machine browser.
$ podman run -it -p 8080:80 nginx 
  • We need to identify the IP address assigned to the Linux subsystem by Windows.
  • Open an Ubuntu-20.04 shell in the Windows Terminal and run the following
$ ip addr | grep 172 

The first 172.xxx.xxx.xxx address is the IP address assigned to the Linux kernel subsystem by the Windows host.

  • Open a browser on your Windows host machine, copy the 172... address found in the previous command, and add :8080 as the port:
  • This demonstrates that your podman installation is now working properly inside Windows.

--

--

Linh Ngo
Linh Ngo

Written by Linh Ngo

Associate Professor, West Chester University of Pennsylvania