平台相关的Docker镜像 - 如何操作?

13

我已在树莓派上安装了Docker,但通常我是在MacBook Pro的OS X上工作。因此,由于前者基于ARM,而后者基于X86,当涉及到Docker镜像时,我遇到了一个问题:它们不兼容。

是否有一种方法可以使用在OS X上编写的Dockerfile构建Docker镜像,以便在ARM平台上运行?


构建是在Docker守护程序上完成的。只要您希望构建Docker ARM镜像,就将您的Docker客户端配置为连接到树莓派。 - Sebi2020
我明确地询问是否可能在ARM架构的OS X上使用Dockerfile构建Docker镜像,因此在树莓派本身上构建不是一个选项。 - Golo Roden
是的,我告诉过你,在 OS X 上有可能有 Docker 文件。你从未说过你不想让树莓派构建你的镜像。你只是想让 Dockerfile 在 Mac 上。为什么这不是一个选项? - Sebi2020
阅读“是否有办法在OS X上使用Dockerfile构建Docker镜像”,将“我只想在OS X上拥有Dockerfile”看作是非常挑剔的,但无论如何...这不是一个选项,因为我想在我的机器上为多个平台(包括Pi)拥有一个构建过程,无论我是否连接到Pi。 - Golo Roden
挑剔或具体,都可以。但是也可以使用x86和qemu-arm构建ARM映像。我稍后会发布链接。但是我认为,如果您想为多个ABI和操作系统构建,则需要不同的工作流程/Dockerfiles。 - Sebi2020
2个回答

4
不,这是不可能的。但是,你可以在OSX上准备你的Dockerfile,并且一旦你满意,就可以在你的ARM设备上进行构建。
index.docker.io的可信构建可能会在未来支持此功能。

关于“未来的可信构建功能”-这只是猜测,还是您知道的比我多呢:-)? - Golo Roden
3
我是Docker的核心开发人员。我希望实现这一目标,并努力推进它,但无法保证成功。当注册表支持多个架构时,我们会获得更多信息。 - creack
自上次更新以来已经两年了吗?我看到有人使用静态链接的QEMU二进制文件来运行已经创建好的二进制文件,但是是否可以在带有QEMU的容器中构建并将输出复制到现有的ARM容器中呢?那么apt-get更新呢? - Cinderhaze

2

Docker for Mac可以通过buildx命令支持跨平台构建。我已经使用这个命令从我的ARM MacBook构建了x86-64镜像。

docker buildx build --platform linux/amd64 .

我相信你可以通过 linux/arm64 平台来针对 Raspberry Pi 4 进行目标定位。详见文档了解更多细节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接