无法让 Podman 在 Mac M1 Monterey 上运行

问题描述 投票:0回答:2

到目前为止我已完成以下操作:

  1. brew install qemu(显然 podman 需要,但无论如何都想将其用于虚拟机)
  2. brew 安装 podman
  3. 修改 ~/.config/containers/containers.conf 并将以下行添加到 [engine] 部分:

helper_binaries_dir = [“/Users/user/dev/homebrew/Cellar/podman/4.1.0/bin”,“/Users/user/dev/homebrew/Cellar/podman/4.1.0/libexec”]

  1. podman 机器初始化
  2. podman机器启动

最初,机器启动抱怨无法在 var/folders/v0/xqf571mj5sg5x7k4j1dpb1_w0000gn/T/podman/podman-machine-default_ready.sock 处拨打 unix 套接字。该文件存在,所以不知道问题出在哪里。

我重新启动以查看是否有帮助,现在套接字文件不再存在,但 podman machine start 仍然想使用它。重新运行 podman machine init 只会出现此错误:

错误:podman-machine-default:虚拟机已存在

该错误总是在成功初始化后发生,因此似乎与我的问题无关。

这是我从我阅读的各种网页中所能得到的信息。希望有人可以提供进一步的帮助:)

我已经十多年没有使用 Mac 了,所以真的不知道像 podman 这样的东西应该如何工作,除此之外显然需要 QEMU 为每个容器运行一个虚拟机。

使用 Docker Desktop for Mac 是否比与 podman 对抗更好?如果是这样,我就用它。 Podman 在我的 Linux 桌面上非常简单,但也许在 Mac 上不值得麻烦,或者至少在 M1 上,因为它是一只手臂。

macos apple-m1 podman
2个回答
4
投票

经过一段时间的调试,我找到了这个问题的原因。

此问题是由于 Mac 机器启动后每次第一次执行 qemu 时都会出现 qemu 7.0.0 启动延迟(3-5 秒)造成的。

Podman 有一些错误,预计由 qemu 调用完成的袜子文件的创建可能会延迟几秒钟,并且当 podman 尝试访问袜子文件时,qemu 尚未创建它们,显示错误“错误:拨打 unix /podman/podman-machine-default_ready.sock:连接:连接被拒绝”。

为了避免这个问题,只需在调用“podman machine start”之前执行 qemu,即使选项无效(只是为了初始化)。

echo "* Podman VM machine for MACOSX is stoped, starting..."

# workaround - initialize qemu before machine start to avoid socket error
/usr/local/bin/qemu-system-x86_64 -machine q35,accel=hvf:tcg -cpu host -display none INVALID_OPTION >> /dev/null 2>&1

podman machine start podman-machine-default
ECODE=$?;if [ $ECODE -ne 0 ];then echo "* Error starting podman linux vm machine: $ECODE";exit $ECODE;fi

1
投票

我昨天也遇到了类似的问题,其他人也有类似的问题。解决方案来自上面评论中链接的问题线程。通过将 QEMU 版本从当前自制软件上默认的版本降级来解决该问题。

您可以通过以下方式在蒙特雷降级到 QEMU 6.2.0:

curl -L -H "Authorization: Bearer QQ==" -o qemu-6.2.0_1.monterey.bottle.tar.gz https://ghcr.io/v2/homebrew/core/qemu/blobs/sha256:fcc3b1a8139f70dae57f5449f3856f9b3b67448ee0623e64da1e47dc255b46f6
brew install -f qemu-6.2.0_1.monterey.bottle.tar.gz
© www.soinside.com 2019 - 2024. All rights reserved.