Podman 故障排除
Podman Desktop 找不到您的 Podman 安装
问题
要安装 Podman,您可以选择多种安装方法
- 从 Podman Desktop 安装。
- Podman 安装程序。
- 特定于操作系统的安装程序:Brew、Chocolatey、Scoop、Winget。
- 受限环境的安装程序。
Podman Desktop 可能无法检测到您的 Podman 安装。
解决方案
请尝试以下步骤来验证您的 Podman 安装。每完成一步后,请退出并重启 Podman Desktop,以确保它能检测到您的 Podman 安装。
-
在终端中,验证您可以访问 Podman CLI,并验证版本。
$ podman version
-
使用您的安装方法将 Podman 更新到最新的稳定版本。
-
在安装日志中搜索错误(如果您的安装方法提供日志)。
-
使用相同的安装方法重新安装 Podman。
-
使用 Podman Desktop 安装程序重新安装 Podman。
-
使用 Podman 安装程序重新安装 Podman。
-
使用另一种方法重新安装 Podman。
Podman Desktop 创建 Podman 虚拟机失败
问题
Podman Desktop 可能无法创建 Podman 虚拟机。
权宜之计
-
在终端中,使用 Podman CLI 创建 Podman 虚拟机
$ podman machine init
-
如果创建失败,请仔细阅读日志以继续进行故障排除。
Podman Desktop 启动 Podman 虚拟机失败
问题
Podman Desktop 可能无法启动 Podman 虚拟机。在 设置 > 资源 页面上,虚拟机会在相当长一段时间内无法切换到运行状态。
解决方法
-
在终端中,使用 Podman CLI 启动 Podman 虚拟机
$ podman machine start
-
如果启动失败,请仔细阅读日志以继续进行故障排除。
或者,您可以运行 podman machine reset
命令,并使用 Podman Desktop UI 创建一个新虚拟机。
Podman Desktop 无法列出镜像或容器
Podman Desktop 可能无法列出镜像或容器。
先决条件
- 需要 Podman 4.1.0 或更高版本。Podman Desktop 要求 Podman 虚拟机在 macOS 的主机上暴露套接字,在 Windows 上暴露命名管道
步骤
-
在 Windows 和 macOS 上:在终端中,验证至少有一个 Podman 虚拟机正在运行
$ podman machine list
-
要验证您可以使用 CLI 连接,请打开一个终端并运行
hello
容器$ podman run quay.io/podman/hello
Podman Desktop 无法列出容器
问题
即使有活动容器在后台运行,Podman Desktop 也可能在“容器”页面上显示“无容器”。
解决方案
-
停止并重启 Podman Desktop。
-
在 Podman Desktop 中,重启 Podman 虚拟机。
-
在终端中,重启 Podman 虚拟机
$ podman machine stop
$ podman machine start -
如果上一步对您无效,请删除您的 Podman 虚拟机,并创建一个新的
$ podman machine rm
$ podman machine init -
如果之前的步骤对您无效,请删除您的 Podman 配置文件,并创建一个新的 Podman 虚拟机
$ rm -rf ~/.local/share/containers/podman
$ rm -rf ~/.config/containers/
$ podman machine init
Podman Desktop 无法显示 rootful 模式 Podman 虚拟机的镜像或容器
Podman 虚拟机的 rootful 配置取决于 Podman 虚拟机的默认连接。默认连接可能会被外部事件修改,或在创建新的 Podman 虚拟机时被修改。Podman Desktop 之后可能会以 rootless 模式重新连接,导致无法显示镜像或容器。
解决方法
-
验证 Podman 的默认连接是到您 Podman 虚拟机的 rootful 连接
$ podman system connection ls
默认连接的行末尾有
true
。rootful 连接的名称后缀为
-root
,URI 前缀为ssh://root@
。默认 rootful 连接示例
Name URI Identity Default
podman-machine-default ssh://user@127.0.0.1:54826/run/user/1000/podman/podman.sock c:\Users\username\.ssh\podman-machine-default false
podman-machine-default-root ssh://root@127.0.0.1:54826/run/podman/podman.sock c:\Users\username\.ssh\podman-machine-default true默认 rootless 连接示例
Name URI Identity Default
podman-machine-default ssh://user@127.0.0.1:54826/run/user/1000/podman/podman.sock c:\Users\username\.ssh\podman-machine-default true
podman-machine-default-root ssh://root@127.0.0.1:54826/run/podman/podman.sock c:\Users\username\.ssh\podman-machine-default false仅当默认连接不是到您 Podman 虚拟机的 rootful 连接时,才继续执行后续步骤。
-
将 Podman 虚拟机设置为 rootful 模式
$ podman machine set --rootful
-
重启 Podman 虚拟机
$ podman machine stop
$ podman machine start -
验证 Podman 默认连接指向 rootful 连接
$ podman system connection ls
仅当默认连接不是到您 Podman 虚拟机的 rootful 连接时,才继续执行后续步骤。
-
将 Podman 虚拟机(例如
podman-machine-default
)设置为 rootful 模式$ podman system connection default podman-machine-default-root
-
重启 Podman 虚拟机
$ podman machine stop
$ podman machine start
验证
-
Podman 默认连接是到您 Podman 虚拟机的 rootful 连接
$ podman system connection ls
关于 Docker 兼容模式的警告
问题
运行 Podman provider 时,仪表板上会显示关于 Docker 兼容模式的警告
⚠️ Docker Socket Compatibility: Podman is not emulating the default Docker socket path: '/var/run/docker.sock'. Docker-specific tools may not work. See troubleshooting page on podman-desktop.io for more information.
这可能在以下任一情况下出现
- Docker 套接字未正确挂载。
- Docker Desktop 也在同时运行。
解决方案
-
停止 Docker Desktop(如果已安装)。
-
在 macOS 上,运行
podman-mac-helper
二进制文件$ sudo podman-mac-helper install
-
重启 Podman 虚拟机以重新创建并激活默认的 Docker 套接字路径。
注意: 如果再次启动 Docker Desktop,它将自动重新为默认 Docker 套接字位置设置别名,Podman 兼容性警告将再次出现。
卸载 Podman Desktop 会保留旧的配置数据
问题
卸载 Podman Desktop 后,配置数据仍然存在,即使对于全新安装来说并不需要。
解决方案
删除 Podman Desktop 配置
- 转到
$HOME/.local/share/containers
目录,其中$HOME
表示当前用户的主文件夹。 - 删除
podman-desktop
文件夹。
删除 Podman 配置
Podman 将其配置文件存储在 $HOME/.config/containers
目录中。删除 Podman 配置的可用选项
- 使用 CLI
- 运行
podman machine reset
命令。
- 运行
- 使用 UI
- 点击状态栏中的 故障排除 图标。
- 点击 清理/清除数据 按钮以从引擎中删除所有资源。
无法从 Podman Desktop 访问 Kubernetes 集群
问题
当您连接到 Kubernetes 集群(例如 Amazon Web Services (AWS) 或 Oracle Cloud Infrastructure (OCI))时,可能会收到此错误:spawnSync <cloud-provider-binary> ENOENT
。
来自云提供商的 Kubernetes 集群需要用户机器上安装一个可执行文件以获取身份验证令牌。当您将此可执行文件的路径添加到 shell 会话的 PATH
中时,此更改不适用于 Podman Desktop。这会阻止 Podman Desktop 获取新令牌,从而使集群无法访问。
解决方案
-
将位于
.kube/config
文件中的二进制文件移动到系统 bin 目录,例如/usr/local/bin/
。 -
在您的 Kubernetes 配置文件中,将
command
参数的值设置为可执行文件的完整路径。例如,command: /usr/local/bin/<cloud-provider-binary>
,其中cloud-provider-binary
表示二进制文件名,例如aws
或oci
。