跳转到主内容

Podman 故障排除

Podman Desktop 找不到您的 Podman 安装

问题

要安装 Podman,您可以选择多种安装方法

  • 从 Podman Desktop 安装。
  • Podman 安装程序。
  • 特定于操作系统的安装程序:Brew、Chocolatey、Scoop、Winget。
  • 受限环境的安装程序。

Podman Desktop 可能无法检测到您的 Podman 安装。

解决方案

请尝试以下步骤来验证您的 Podman 安装。每完成一步后,请退出并重启 Podman Desktop,以确保它能检测到您的 Podman 安装。

  1. 在终端中,验证您可以访问 Podman CLI,并验证版本。

    $ podman version
  2. 使用您的安装方法将 Podman 更新到最新的稳定版本。

  3. 在安装日志中搜索错误(如果您的安装方法提供日志)。

  4. 使用相同的安装方法重新安装 Podman。

  5. 使用 Podman Desktop 安装程序重新安装 Podman。

  6. 使用 Podman 安装程序重新安装 Podman。

  7. 使用另一种方法重新安装 Podman。

Podman Desktop 创建 Podman 虚拟机失败

问题

Podman Desktop 可能无法创建 Podman 虚拟机。

权宜之计

  1. 在终端中,使用 Podman CLI 创建 Podman 虚拟机

    $ podman machine init
  2. 如果创建失败,请仔细阅读日志以继续进行故障排除。

Podman Desktop 启动 Podman 虚拟机失败

问题

Podman Desktop 可能无法启动 Podman 虚拟机。在 设置 > 资源 页面上,虚拟机会在相当长一段时间内无法切换到运行状态。

解决方法

  1. 在终端中,使用 Podman CLI 启动 Podman 虚拟机

    $ podman machine start
  2. 如果启动失败,请仔细阅读日志以继续进行故障排除。

或者,您可以运行 podman machine reset 命令,并使用 Podman Desktop UI 创建一个新虚拟机

Podman Desktop 无法列出镜像或容器

Podman Desktop 可能无法列出镜像或容器。

先决条件

  • 需要 Podman 4.1.0 或更高版本。Podman Desktop 要求 Podman 虚拟机在 macOS 的主机上暴露套接字,在 Windows 上暴露命名管道

步骤

  1. 在 Windows 和 macOS 上:在终端中,验证至少有一个 Podman 虚拟机正在运行

    $ podman machine list
  2. 要验证您可以使用 CLI 连接,请打开一个终端并运行 hello 容器

    $ podman run quay.io/podman/hello

Podman Desktop 无法列出容器

问题

即使有活动容器在后台运行,Podman Desktop 也可能在“容器”页面上显示“无容器”。

解决方案

  1. 停止并重启 Podman Desktop。

  2. 在 Podman Desktop 中,重启 Podman 虚拟机。

  3. 在终端中,重启 Podman 虚拟机

    $ podman machine stop
    $ podman machine start
  4. 如果上一步对您无效,请删除您的 Podman 虚拟机,并创建一个新的

    $ podman machine rm
    $ podman machine init
  5. 如果之前的步骤对您无效,请删除您的 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 模式重新连接,导致无法显示镜像或容器。

解决方法

  1. 验证 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 连接时,才继续执行后续步骤。

  2. 将 Podman 虚拟机设置为 rootful 模式

    $ podman machine set --rootful
  3. 重启 Podman 虚拟机

    $ podman machine stop
    $ podman machine start
  4. 验证 Podman 默认连接指向 rootful 连接

    $ podman system connection ls

    仅当默认连接不是到您 Podman 虚拟机的 rootful 连接时,才继续执行后续步骤。

  5. 将 Podman 虚拟机(例如 podman-machine-default)设置为 rootful 模式

    $ podman system connection default podman-machine-default-root
  6. 重启 Podman 虚拟机

    $ podman machine stop
    $ podman machine start

验证

  1. 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 也在同时运行。

解决方案

  1. 停止 Docker Desktop(如果已安装)。

  2. 在 macOS 上,运行 podman-mac-helper 二进制文件

    $ sudo podman-mac-helper install
  3. 重启 Podman 虚拟机以重新创建并激活默认的 Docker 套接字路径。

注意: 如果再次启动 Docker Desktop,它将自动重新为默认 Docker 套接字位置设置别名,Podman 兼容性警告将再次出现。

卸载 Podman Desktop 会保留旧的配置数据

问题

卸载 Podman Desktop 后,配置数据仍然存在,即使对于全新安装来说并不需要。

解决方案

删除 Podman Desktop 配置

  1. 转到 $HOME/.local/share/containers 目录,其中 $HOME 表示当前用户的主文件夹。
  2. 删除 podman-desktop 文件夹。

删除 Podman 配置

Podman 将其配置文件存储在 $HOME/.config/containers 目录中。删除 Podman 配置的可用选项

  • 使用 CLI
    • 运行 podman machine reset 命令。
  • 使用 UI
    1. 点击状态栏中的 故障排除 图标。
    2. 点击 清理/清除数据 按钮以从引擎中删除所有资源。

无法从 Podman Desktop 访问 Kubernetes 集群

问题

当您连接到 Kubernetes 集群(例如 Amazon Web Services (AWS) 或 Oracle Cloud Infrastructure (OCI))时,可能会收到此错误:spawnSync <cloud-provider-binary> ENOENT

来自云提供商的 Kubernetes 集群需要用户机器上安装一个可执行文件以获取身份验证令牌。当您将此可执行文件的路径添加到 shell 会话的 PATH 中时,此更改不适用于 Podman Desktop。这会阻止 Podman Desktop 获取新令牌,从而使集群无法访问。

解决方案

  1. 将位于 .kube/config 文件中的二进制文件移动到系统 bin 目录,例如 /usr/local/bin/

  2. 在您的 Kubernetes 配置文件中,将 command 参数的值设置为可执行文件的完整路径。例如,command: /usr/local/bin/<cloud-provider-binary>,其中 cloud-provider-binary 表示二进制文件名,例如 awsoci