Docker在mac上运行armv7镜像



我的mac使用x86_64硬件,理论上我不应该运行为armv7构建的docker映像。

然而

Docker文档显示:

Docker Desktop提供binfmt_misc多体系结构支持,这意味着您可以为不同的Linux体系结构运行容器,如arm、mips、ppc64le,甚至s390x。

这不需要在容器本身中进行任何特殊配置,因为它使用Docker for Mac VM中的qemu static。

我也在读这样的文章,这些文章证实了上述
docker run -it --rm arm32v7/debian /bin/bash

应该在mac上工作,尽管它对我不起作用:

Unable to find image 'arm32v7/debian:latest' locally
latest: Pulling from arm32v7/debian
Digest: sha256:9b61eaedd46400386ecad01e2633e4b62d2ddbab8a95e460f4e0057c612ad085
Status: Image is up to date for arm32v7/debian:latest
docker: Error response from daemon: image with reference arm32v7/debian was found but does not match the specified platform cpu architecture: wanted: amd64, actual: arm.
See 'docker run --help'.

我想知道我是不是误解了什么。

Docker桌面社区版本2.4.2.0(48975(edge
Docker版本20.10.0-beta1,构建ac365d7
MacOS版本10.15.7(19H2(

注意:在研究该主题时,我尝试使用qemu并运行:
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
,这可能会干扰默认行为。

我认为我的问题与这个moby问题有关。

修复非常简单,因为我只需要添加--platform参数,在我的情况下,linux/armlinux/arm/v7:
docker run -it --rm arm32v7/debian /bin/bash
已成为
docker run --platform=linux/arm -it --rm arm32v7/debian /bin/bash

瞧:

root@82c3ff8752d3:/# uname -a
Linux 82c3ff8752d3 5.4.39-linuxkit #1 SMP Fri May 8 23:03:06 UTC 2020 armv7l GNU/Linux

最新更新