到目前为止我已完成以下操作:
helper_binaries_dir = [“/Users/user/dev/homebrew/Cellar/podman/4.1.0/bin”,“/Users/user/dev/homebrew/Cellar/podman/4.1.0/libexec”]
最初,机器启动抱怨无法在 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 上,因为它是一只手臂。
经过一段时间的调试,我找到了这个问题的原因。
此问题是由于 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
我昨天也遇到了类似的问题,其他人也有类似的问题。解决方案来自上面评论中链接的问题线程。通过将 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