微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VS Code 创建 devcontainer 时如何获取 ARM Docker 镜像? (mac m1)

如何解决VS Code 创建 devcontainer 时如何获取 ARM Docker 镜像? (mac m1)

购买新的 mac M1 后,我决定使用 Clone Repository in container Volume 功能重新安装现有的 vscode devcontainers。

它有点奏效,但后来,我立即注意到它非常缓慢、有问题,并且使用了 QEMU。

Docker M1 official Page 上阅读本文后:

然而,尝试在 Apple M1 机器上运行基于 Intel 的容器可能会崩溃,因为 QEMU 有时无法运行容器。因此,我们建议您在 M1 机器上运行 ARM64 容器。与基于 Intel 的容器相比,这些容器速度更快,占用的内存更少。

我知道我是在模拟下运行 Intel 映像,我不应该那样做。

为了构建这些容器,我从 MCR (here) 中挑选了图像。 在所有这些上,我注意到一个“x86-64”标签,没有提到 ARM。这是否意味着微软实际上没有提供官方的 ARM 镜像?

如果是这样,我应该如何使用 ARM 映像拥有干净的开发容器?我应该等待 MCR 更新吗?或者我应该选择其他图像,而不是微软的图像? 我错过了什么吗?


我正在使用:

  • VS 代码 1.54.1
  • Docker 桌面预览版 3.1.0 (60984)
  • Mac OS BigSur 11.2.1

解决方法

如果您需要特定的 MCR 容器,则需要等待它们可用于 arm64。

但是,如果您不需要特定的镜像,您可以在 Docker HUB 中找到大量为 arm64 构建的 Docker 镜像。您可以搜索arm64v8或搜索图片并检查是否显示arm64标签

在这两种情况下,您都可以尝试为 linux/arm64 平台架构提取任何映像,如下所示:

docker pull --platform linux/arm64 image

最后的选择是让您构建自己的映像。这可能很耗时,因为您可能需要将某些库移植到 arm64v8。

,

按照 jordanvrtanoski 的回答,

我决定使用与 arm64 本地兼容的官方 Docker 镜像。 在这两者之间,我意识到 MCR 图像没有任何疯狂或无法复制的东西。他们提供用于图像的基本模板here

因为我在我的容器中使用 root 用户,并且不需要很多额外的二进制文件,所以我从这些 MCR 映像中选择的唯一内容是自定义 bashrc 文件,以便在 ls cmd 上自定义提示和颜色,和别名。

一切都按预期工作,而且更清晰,因为我的 Dockerfile 的每一行现在都是已知的,对我有用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。