Podman Installation
发布时间:2026-08-14 | 浏览:10
Looking for a GUI? You can find Podman Desktop here .
Installing on Mac & Windows
While "containers are Linux," Podman also runs on Mac and Windows, where it provides a native podman CLI and embeds a guest Linux system to launch your containers. This guest is referred to as a Podman machine and is managed with the podman machine command. Podman on Mac and Windows also listens for Docker API clients, supporting direct usage of Docker-based tools and programmatic access from your language of choice.
On Mac, each Podman machine is backed by a virtual machine. Once installed, the podman command can run directly from the Unix shell in Terminal , where it remotely communicates with the podman service running in the Machine VM.
Download Podman: Recommended Use the Installer (Recommended) Podman can be downloaded from the Podman.io website. You can get binaries and a pkginstaller from our GitHub release page . Not recommended Use Homebrew It's not recommended to install via Homebrew because it is a community-maintained package manager, and we cannot guarantee the stability of the Podman installation. However, if you do wish to use Brew, run: brew install podman
Download Podman:
Recommended Use the Installer (Recommended) Podman can be downloaded from the Podman.io website. You can get binaries and a pkginstaller from our GitHub release page .
Podman can be downloaded from the Podman.io website. You can get binaries and a pkginstaller from our GitHub release page .
Not recommended Use Homebrew It's not recommended to install via Homebrew because it is a community-maintained package manager, and we cannot guarantee the stability of the Podman installation. However, if you do wish to use Brew, run: brew install podman
Not recommended
It's not recommended to install via Homebrew because it is a community-maintained package manager, and we cannot guarantee the stability of the Podman installation. However, if you do wish to use Brew, run:
Create and start your first Podman machine: podman machine init podman machine start
Create and start your first Podman machine:
Verify the installation information: podman info
Verify the installation information:
On Windows, each Podman machine is backed by a virtualized Windows Subsystem for Linux (WSLv2) distribution. Once installed, the podman command can be run directly from your Windows PowerShell (or CMD) prompt, where it remotely communicates with the podman service running in the WSL environment. Alternatively, you can access Podman directly from the WSL instance if you prefer a Linux prompt and Linux tooling.
See the Podman for Windows guide for setup and usage instructions.
Installing on Linux
Linux Distributions
Arch Linux & Manjaro Linux
If you have problems when running Podman in rootless mode follow the instructions here
For more information on Podman on ArchLinux click here
For further details, please refer to the instructions on the Alpine Linux wiki .
CentOS Stream
Podman is available in the default in the AppStream repo for CentOS Stream 9+.
The podman package is available in the Debian 11 (Bullseye) repositories and later.
To run podman machine ... commands
slirp4netns is no longer the default for rootless networking on new podman installations, obsoleted in favor of passt . If you have containers using slirp4netns, make sure slirp4netns is installed:
Fedora CoreOS , Fedora Silverblue
Built-in, no need to install
Bitbake recipes for Podman and its dependencies are available in the meta-virtualization layer . Add the layer to your OpenEmbedded build environment and build Podman using:
openSUSE Kubic
Built-in, no need to install
Raspberry Pi OS arm64 (beta)
Raspberry Pi OS use the standard Debian repositories, so it is fully compatible with Debian's arm64 repository. You can simply follow the steps for Debian to install Podman.
Follow the official docs .
The podman package is available in the official repositories for Ubuntu 20.10 and newer.
Follow the steps for Ubuntu (or Debian if you use LMDE).
Installing development versions of Podman
You can test the very latest Podman in Fedora's updates-testing repository before it goes out to all Fedora users.
If you use a newer Podman package from Fedora's updates-testing , we would appreciate your +1 feedback in Bodhi, Fedora's update management system .
Installing bleeding-edge versions of Podman
If you like danger and are interested in testing the latest unreleased bits of Podman on Fedora, CentOS Stream 9+ and RHEL9+, we have a Copr repository .
CAUTION: This repository contains rpm builds generated using the main branch of upstream container tools repositories, and simply CANNOT be recommended for any production use.
Enable the Copr and install podman.
Installing on FreeBSD
The FreeBSD port of the Podman container engine is experimental and should be used for evaluation and testing purposes only. It is supported on FreeBSD 14.3 and newer .
You can install Podman on FreeBSD using pkg :
There's also a podman-suite meta package that will pull additional packages for you (buildah, skopeo).
Initial configuration
To properly support Podman's container restart policy, conmon needs fdescfs(5) to be mounted on /dev/fd .
If /dev/fd is not already mounted:
To make it permanent, add the following line to /etc/fstab :
To start Podman after reboot:
Container networking relies on NAT to allow container network packets out to the host's network. This requires a PF firewall to perform the translation. A simple example is included - to use it:
Edit /etc/pf.conf and set v4egress_if , v6egress_if variables to your network interface(s)s
Enable and start pf :
The sample PF configuration includes support for port redirections. These are implemented as redirect rules in anchors nested under cni-rdr.
Support for redirecting connections from the container host to services running inside a container is included for FreeBSD 13.3 and later. To enable this, first load the pf kernel module and enable PF support for these redirections using sysctl:
Redirect rules will work if the destination address is localhost (e.g. 127.0.0.1 or ::1) - to enable this, the following line must be included in your /etc/pf.conf :
if upgrading from an older version, this needs to be added to /etc/pf.conf .
For example if host port 1234 is redirected to an http service running in a container, you could connect to it using:
Container images and related state is stored in /var/db/containers . It is recommended to use ZFS for this:
If your system cannot use ZFS, change storage.conf to use the vfs storage driver:
After following these steps you should be able to run native images:
It is possible to run many Linux container images using FreeBSD's Linux emulation:
Building from Source
Build and Run Dependencies
On all RHEL and CentOS Stream, first install dnf-builddep :
Install build dependencies:
Install runtime dependencies:
Debian, Ubuntu, and related distributions:
The netavark package may not be available on older Debian / Ubuntu versions. Install the containernetworking-plugins package instead.
On openSUSE Leap 15.x and Tumbleweed:
On Manjaro (and maybe other Linux distributions):
Make sure that the Linux kernel supports user namespaces:
If not, please update the kernel. For Manjaro Linux the instructions can be found here: https://wiki.manjaro.org/index.php/Manjaro_Kernels
After that enable user namespaces:
To enable the user namespaces permanently:
Building missing dependencies
If any dependencies cannot be installed or are not sufficiently current, they have to be built from source. This will mainly affect Debian, Ubuntu, and related distributions, or RHEL where no subscription is active (e.g. Cloud VMs).
Be careful to double-check that the version of golang is new enough (i.e. go version ), as of August 2025 version is 1.23.x or higher is required. The current minimum required version can always be found in the go.mod file. If needed, golang kits are available at https://golang.org/dl/ . Alternatively, go can be built from source as follows (it's helpful to leave the system-go installed, to avoid having to bootstrap go :
The latest version of conmon is expected to be installed on the system. Conmon is used to monitor OCI Runtimes. To build from source, use the following:
The latest version of at least one container runtime is expected to be installed on the system. crun or runc are some of the possibilities, and one is picked up as the default runtime by Podman (crun has priority over runc). Supported versions of crun and runc are available on modern Linux distributions like Ubuntu 22.04 or newer. The minimum required version for runc is v1.1.11 and v1.14.3 for crun . This requirement is necessary as Podman now depends on features and behavior introduced in this version.
To double-check, the first line of the runc --version output should show version 1.1.11 or newer. If not, you can build it from source:
Add configuration
Optional packages
Installing fuse-overlayfs may resolve a number of issues, e.g. the one from Ecryptfs: configure storage: 'overlay' is not supported over ecryptfs, a mount_program is required: backing file system is unsupported for this graph driver
Fedora, CentOS, RHEL, and related distributions:
Debian, Ubuntu, and related distributions:
fuse-overlayfs can also be installed from source .
Get Source Code
First, ensure that the go version that is found first on the $PATH is 1.23.x or higher. Instruction above will help you compile newer version of Go if needed. Then we can build Podman:
Otherwise, if you do not want to build Podman with seccomp or selinux support you can add BUILDTAGS="" when running make.
Podman supports optional build tags for compiling support of various features. To add build tags to the make option the BUILDTAGS variable must be set, for example:
If you are building on RHEL8 you'll need to build without btrfs support due to it being removed :
Note that Podman does not officially support device-mapper. Thus, the exclude_graphdriver_devicemapper tag is mandatory.
Vendoring - Dependency Management
This project is using go modules for dependency management. If the CI is complaining about a pull request leaving behind an unclean state, it is very likely right about it. After changing dependencies, make sure to run make vendor to synchronize the code with the go module and repopulate the ./vendor directory.
An Ansible Role is also available to automate the installation of the above statically linked binary on its supported OS:
Configuration files
registries.conf
Man Page: registries.conf.5
/etc/containers/registries.conf
registries.conf is the configuration file which specifies which container registries should be consulted when completing image names which do not include a registry or domain portion.
NOTE: On macOS or Windows, please run the command podman machine ssh to enter the machine VM and edit the /etc/containers/registries.conf file with the same configuration content. If you encounter permission issues, run podman machine set --rootful and try again.
Example from the Fedora containers-common package
/usr/share/containers/mounts.conf and optionally /etc/containers/mounts.conf
The mounts.conf files specify volume mount directories that are automatically mounted inside containers when executing the podman run or podman build commands. Container process can then use this content. The volume mount content does not get committed to the final image.
Usually these directories are used for passing secrets or credentials required by the package software to access remote package repositories.
For example, a mounts.conf with the line " /usr/share/rhel/secrets:/run/secrets ", the content of /usr/share/rhel/secrets directory is mounted on /run/secrets inside the container. This mountpoint allows Red Hat Enterprise Linux subscriptions from the host to be used within the container.
Note this is not a volume mount. The content of the volumes is copied into container storage, not bind mounted directly from the host.
Example from the Fedora containers-common package:
/usr/share/containers/seccomp.json
seccomp.json contains the whitelist of seccomp rules to be allowed inside of containers. This file is usually provided by the containers-common package.
The link above takes you to the seccomp.json
/etc/containers/policy.json
Man Page: policy.json.5
Example from the Fedora containers-common package:
Installing on Mac & Windows macOS Windows
Installing on Linux Linux Distributions Installing development versions of Podman Installing bleeding-edge versions of Podman
Linux Distributions
Installing development versions of Podman
Installing bleeding-edge versions of Podman
Installing on FreeBSD
Building from Source Build and Run Dependencies Building missing dependencies Get Source Code Vendoring - Dependency Management
Build and Run Dependencies
Building missing dependencies
Get Source Code
Vendoring - Dependency Management
Configuration files registries.conf mounts.conf seccomp.json policy.json
registries.conf