概述
本文主要介绍了 WSL2 发行版(例如 Ubuntu)和 Windows 如何使用统一的 podman 环境进行容器管理工作。
背景
在 WSL2 环境下,在安装 Podman Desktop 后,初始化 podman 时会自动创建一个 WSL 环境作为 podman 的运行环境。如下可以看到,除了我原来的 Ubuntu 外,podman 还自动创建了一个 podman-machine-default
:
>wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
podman-machine-default Running 2
podman 初始化完成后,可以在 windows 下使用 podman 命令进行容器管理:
>podman version
Client: Podman Engine
Version: 5.5.1
API Version: 5.5.1
Go Version: go1.24.3
Git Commit: 850db76dd78a0641eddb9ee19ee6f60d2c59bcfa
Built: Fri Jun 6 05:49:19 2025
OS/Arch: windows/amd64
Server: Podman Engine
Version: 5.4.2
API Version: 5.4.2
Go Version: go1.23.7
Git Commit: be85287fcf4590961614ee37be65eeb315e5d9ff
Built: Wed Apr 2 08:00:00 2025
OS/Arch: linux/amd64
然而,在 Ubuntu 下却无法执行 podman 命令:
$ podman version
Command 'podman' not found, but can be installed with:
sudo apt install podman
虽然我们也可以在 ubuntu 上安装另一个独立的 podman 环境,但是这显然很不优雅也很不方便:
- 多一个 podman 运行环境占用了更多的空间
- 两个 podman 的镜像和容器不通用,管理起来不方便,也会使用更多的存储空间
为了解决这个问题,我们可以在 Ubuntu 上使用 podman-remote 连接到 podman-machine-default
中的运行环境(就像 windows 中 podman 命令实际做的一样)。
过程
安装 podman-remote
在 podman 的 release 页面下载 podman-remote 的 linux 安装包进行安装,这里以 podman-remote-static-linux_amd64.tar.gz 举例:
wget https://github.com/containers/podman/releases/download/v5.5.0/podman-remote-static-linux_amd64.tar.gz
tar xf podman-remote-static-linux_amd64.tar.gz
sudo install bin/podman-remote-static-linux_amd64 /usr/bin/podman
rm -rf bin/ podman-remote-static-linux_amd64.tar.gz
安装完成之后,使用以下命令验证安装结果:
$ podman --version
podman version 5.5.0
配置连接
首先,在 windows 下查看 podman 的连接方式:
>podman system connection list
Name URI Identity Default ReadWrite
podman-machine-default ssh://user@127.0.0.1:10085/run/user/1000/podman/podman.sock C:\Users\focks\.local\share\containers\podman\machine\machine false true
podman-machine-default-root ssh://root@127.0.0.1:10085/run/podman/podman.sock C:\Users\focks\.local\share\containers\podman\machine\machine true true
可以看到有两个地址以及相应的认证文件,在 Ubuntu 上将其添加进去:
podman system connection add podman-machine-default-root --identity ~/.ssh/podman-machine-default --default ssh://root@127.0.0.1:10085/run/podman/podman.sock
podman system connection add podman-machine-default --identity ~/.ssh/podman-machine-default ssh://user@127.0.0.1:10085/run/user/1000/podman/podman.sock
验证
完成上述步骤后,可以同时在 windows 和 wsl ubuntu 上管理同一个 podman。如下可以看到,两边看到的 images 列表是一样的。
windows:
C:\Users\focks>podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/ubuntu latest bf16bdcff9c9 7 weeks ago 80.6 MB
quay.io/podman/hello latest 5dd467fce50b 13 months ago 787 kB
ubuntu:
focksor@focksor:~$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/ubuntu latest bf16bdcff9c9 7 weeks ago 80.6 MB
quay.io/podman/hello latest 5dd467fce50b 13 months ago 787 kB