Podman 运行 Linux 容器,这些容器依赖于 Linux 操作系统。这意味着如果用户使用的是 Mac 或 Windows,Podman 需要在 VM 中运行。大多数情况下,Podman machine 的标准安装可以开箱即用。但是,当出现问题时,底层机器系统的复杂性(它依赖于 Podman 的远程客户端通过 SSH 与 VM 中的 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
解释:无法建立与您的 VM 的连接。这通常意味着 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 目录中的密钥。很可能存在配置错误的密钥,或者与您的 VM 同名的旧密钥。在这种情况下,最好删除与 podman-machine 相关的所有密钥,然后重新初始化您的机器。
问题:VM 中的时间不正确
症状:使用 Podman 和 Podman machine 运行容器时,VM 中的时间不正确。
解释:在挂起和恢复主机 Mac 机器时,VM 中的虚拟化时钟会偏离主机时钟。
解决方案:目前,Podman 无法为这个问题实施修复。我们已经意识到了这个问题,并且正在优先考虑修复,您可以在 Github 问题 上跟踪进度。但是,简单地重新启动机器似乎可以解决问题,如果无法重新启动,许多社区成员在链接的问题中发布了他们的变通方法。
结论
Podman machine 的目标是抽象掉在 VM 中运行 Podman 的复杂性,但隐藏这些抽象意味着当出现问题时,很难追踪问题出现在哪里以及如何解决它。希望在这里,我们能够提供一些最常见配置问题的解决方案。
如果您遇到了此处未提及的问题,请在我们的 Github 上创建一个问题!您也可以通过 加入我们的社区 来联系 Podman 开发人员,因为我们有邮件列表和矩阵/IRC 房间,以及社区会议!
回复 Andreas取消回复