,

Podman Machine 故障排除

Podman 运行 Linux 容器,这些容器依赖于 Linux 操作系统。这意味着如果用户使用的是 Mac 或 Windows,Podman 需要在虚拟机中运行。大多数情况下,Podman Machine 的标准安装可以开箱即用。但是,如果出现问题,底层机器系统的复杂性可能会让用户难以确定问题所在。由于 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 配置错误。

解决方案:清理您主目录下的 .ssh 目录中的密钥。最有可能的是,可能存在配置错误的密钥,或者与您的虚拟机同名的旧密钥。在这种情况下,最好删除与 podman-machine 相关的所有密钥,然后重新初始化您的机器。

问题:虚拟机中的时间不正确

症状:使用 Podman 和 Podman Machine 运行容器时,虚拟机中的时间不正确。

解释:挂起和恢复主机 Mac 时,虚拟机中的虚拟时钟会与主机时钟发生偏差。

解决方案:目前,Podman 还没有为这个问题实现修复方案。我们已经了解到这个问题,并正在优先考虑修复它,可以在 Github 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: no such file or directory”
    ERRO[0056] 无法写入 pod 事件: “write unixgram @000d7->/run/systemd/journal/socket: sendmsg: no such file or directory”
    ERRO[0056] 无法写入 pod 事件: “write unixgram @000d7->/run/systemd/journal/socket: sendmsg: no such file or directory”
    1c75d92b306e057dadeebebe796e7c60525986f508b0227f126d59f8e41e7569

  2. Andreas Avatar

    为什么每次我尝试运行容器时都会收到“/run/systemd/journal/socket: sendmsg: no such file or directory”错误?我从来没有成功运行过任何容器。
    我尝试让 root 用户创建“journal”文件夹和 socket 文件,然后授予我的用户权限。但是总是失败。
    如何解决这个问题?

回复 Andreas取消回复

订阅

使用您的电子邮件地址注册,以接收来自本网站的电子邮件更新。


分类


搜索