Podman 运行 Linux 容器,这依赖于 Linux 操作系统。这意味着如果用户在 Mac 或 Windows 上,Podman 需要在虚拟机内部运行。大多数情况下,标准安装的 Podman machine 开箱即用。然而,当出现问题时,底层机器系统的复杂性(它依赖 Podman 的远程客户端通过 SSH 与虚拟机内部的 Podman 进行通信)可能会让用户感到困惑和难以查明具体哪里出了问题。随着 Podman machine 最近使用量越来越大,尤其是在非 Linux 平台上,我们发现了很多常见问题,因此我们想向您展示如何解决这些问题。
首先尝试这个
大多数情况下,如果您不是特别在意您正在运行的机器和容器,简单地重新创建您的机器应该可以解决问题并重置您的机器配置。
podman machine rm
podman machine init --now
如果您已经尝试过此操作但仍然遇到 Podman machine 的问题,这里有一些常见问题及其解决方法。
问题:Podman 安装的架构错误
症状:您使用的是 M1 Mac。您可能还使用 Homebrew 安装了 Podman。您收到此错误
Error: qemu exited unexpectedly with exit code -1, stderr: qemu-system-x86_64: Unknown Error.
解决方案:确保您的 homebrew 安装不是在 Rosetta 下完成的。在 Rosetta 下的 Homebrew 会安装错误的 Podman 版本,Podman machine 将无法启动。这需要您重新安装原生 Homebrew,而不是在 Rosetta 下。
问题:Podman Machine 连接配置不正确
症状:您运行 Podman 命令并收到此错误
Error: unable to connect to Podman socket: Get "http://d/v4.0.2/libpod/_ping": dial unix ///var/folders/kl/mjb_x3511yd21w18ht4sz62m0000gn/T/podman-run--1/podman/podman.sock: connect: no such file or directory
解释:未能建立与虚拟机的连接。这通常意味着 SSH 密钥设置出了问题。
解决方案:首先,检查您的 Podman 系统连接。它应该看起来像这样
$ podman system connection list
Name URI Identity Default
podman-machine-default ssh://core@localhost:62840/run/user/501/podman/podman.sock /Users/ashley/.ssh/podman-machine-default true
podman-machine-default-root ssh://root@localhost:62840/run/podman/podman.sock /Users/ashley/.ssh/podman-machine-default false
确保与您所需机器的连接设置为默认。如果不是,请使用此命令将您所需的连接设置为默认连接
podman system connection default podman-machine-default
问题:SSH 密钥配置不正确
症状:您运行 Podman 命令并收到此错误
Error: failed to connect: ssh: handshake failed: read tcp [::1]:56237->[::1]:49619: read: connection reset by peer
解释:您的 SSH 密钥或 ssh-agent 配置错误。
解决方案:清理您 home/.ssh 目录中的密钥。很可能存在配置错误的密钥,或与您的虚拟机同名的旧密钥。在这种情况下,最好删除所有与 podman-machine 关联的密钥,然后重新初始化您的机器。
问题:我的虚拟机内部时间不正确
症状:使用 Podman 和 Podman machine 运行容器时,虚拟机内部时间不正确。
解释:在暂停和恢复主机 Mac 机器时,虚拟机内部的虚拟时钟与主机时钟发生漂移。
解决方案:目前,Podman 尚未能实现此问题的修复。我们已意识到并正在优先处理修复,进度可在 Github Issue 上追踪。然而,简单地重启机器似乎可以解决问题,如果无法重启,许多社区成员已在链接的 issue 中发布了他们的变通方法。
结论
Podman machine 的初衷是为了抽象化在虚拟机中运行 Podman 的复杂性,但隐藏这些抽象意味着当出现问题时,很难追踪到问题出在哪里以及如何修复。希望在这里,我们能够为最常见的配置问题提供一些解决方案。
如果您遇到了这里未提及的问题,请在我们的 Github 上提交一个 issue!您还可以通过加入我们的社区联系 Podman 开发者,我们有一个邮件列表、一个 matrix/IRC 聊天室,以及社区会议!
回复 Andreas取消回复