如果 M1 上的 Docker Desktop 使用 QEMU 进行模拟,为什么还需要 Rosetta?

ken*_*ong 11 qemu docker apple-m1

在为Apple Silicon安装Docker Desktop时,官方说明说:

您必须安装 Rosetta 2,因为某些二进制文件仍然是 Darwin/AMD64。

但是,如果我理解正确的话,基于 Intel 的容器实际上使用 QEMU 进行模拟,而不是 Rosetta

然而,尝试在模拟下的 Apple Silicon 机器上运行基于 Intel 的容器可能会崩溃,因为 qemu 有时无法运行容器。

(这是 Docker在 M1 上运行非本机容器时速度缓慢的原因之一。)

那么 Docker 实际上使用 Rosetta 做什么呢?

Ort*_*kni 2

Rosetta 用于运行 Docker 本身,但根据发行说明,从版本 4.3.0 开始:

Apple 芯片上的 Docker Desktop 不再需要 Rosetta 2。

已知问题中有两个例外:

未安装 Rosetta 2 时,某些命令行工具无法运行。

  • docker-compose 的旧版本 1.x。请改用 Compose V2。
  • docker-credential-ecr-login 凭证助手。

对于容器,使用 qemu,但使用 Rosetta 运行 x86-64 容器存在一个悬而未决的问题。

要在 Apple M1 上运行 x86-64 容器,您可以安装 x86-64 版本的podman并使用 Rosetta 运行它。