,

Podman 机器故障排除

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 上提出问题!您还可以通过加入我们的社区与 Podman 开发人员联系,我们有一个邮件列表、一个 matrix/IRC 聊天室以及社区会议!

对“Podman Machine 故障排除”的 2 条回复

  1. Andreas Avatar

    $ podman run -dt -p 8080:8080/tcp -e HTTPD_VAR_RUN=/run/httpd -e HTTPD_MAIN_CONF_D_PATH=/etc/httpd/conf.d \
    -e HTTPD_MAIN_CONF_PATH=/etc/httpd/conf \
    -e HTTPD_CONTAINER_SCRIPTS_PATH=/usr/share/container-scripts/httpd/ \
    registry.fedoraproject.org/f29/httpd /usr/bin/run-httpd
    ERRO[0055] 无法写入 pod 事件:“write unixgram @000d7->/run/systemd/journal/socket: sendmsg: 没有这样的文件或目录”
    ERRO[0056] 无法写入 pod 事件:“write unixgram @000d7->/run/systemd/journal/socket: sendmsg: 没有这样的文件或目录”
    ERRO[0056] 无法写入 pod 事件:“write unixgram @000d7->/run/systemd/journal/socket: sendmsg: 没有这样的文件或目录”
    1c75d92b306e057dadeebebe796e7c60525986f508b0227f126d59f8e41e7569

  2. Andreas Avatar

    为什么我每次尝试运行容器时都会收到“/run/systemd/journal/socket: sendmsg: 没有这样的文件或目录”?所以,我从未成功运行过任何容器。
    我尝试让 root 用户创建“journal”文件夹和套接字文件,然后将其授予我的用户。但总是失败。
    如何解决这个问题。

回复 Andreas取消回复

订阅

输入您的电子邮件地址以接收来自本网站的电子邮件更新。

返回

您的消息已发送

警告
警告
警告。

分类


搜索