无法让 Podman 在 Mac M1 Monterey 上运行



到目前为止,我已经做了以下工作:

  1. brew install qemu(显然需要为podman,但希望使用它为vm)
  2. 修改~/.config/containers/container .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 machine init
  2. podman machine start

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

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

错误:podman-machine-default: VM already exists

这个错误总是在它成功初始化后发生,所以似乎与我的问题无关。

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

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

我更好地使用Docker桌面Mac而不是与podman战斗?如果有,我就用它。Podman在我的Linux桌面上非常容易,但在Mac上可能不值得这么麻烦,或者至少在M1上,因为它是一个手臂。

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

这个问题是由于qemu 7.0.0启动延迟(3-5s),发生在Mac机机器启动后的第一个qemu执行。

Podman有一些错误,没有预料到通过qemu调用来创建socks文件会延迟几秒钟,当Podman试图访问socks文件时,qemu还没有创建它们,显示错误" error: dial unix/Podman/Podman -machine-default_ready。Sock: connect: connection refused"

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

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

这个问题是由于qemu 7.0.0启动延迟(3-5s),发生在Mac机机器启动后的第一个qemu执行。

Podman有一些错误,没有预料到通过qemu调用来创建socks文件会延迟几秒钟,当Podman试图访问socks文件时,qemu还没有创建它们,显示错误" error: dial unix/Podman/Podman -machine-default_ready。Sock: connect: connection refused"

为了避免这个问题,只需在调用"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

我昨天也遇到了类似的问题。解决方案来自上面评论中链接的问题线程。此问题已通过将QEMU版本从当前可用的homebrew默认版本降级来解决。

您可以使用以下命令降级到Monterrey上的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

最新更新