,

Podman Machine 故障排除

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 房间,以及社区会议!

“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”文件夹和套接字文件,然后授予我的用户权限。但它始终失败。
    如何解决这个问题?

回复 Andreas取消回复

订阅

使用您的电子邮件地址注册,以便从本网站通过电子邮件接收更新。


类别


搜索