【问题标题】:Docker run armv7 images on macDocker 在 mac 上运行 armv7 镜像
【发布时间】:2020-10-29 11:35:56
【问题描述】:

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

但是

Docker documentation 说:

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

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

我也在阅读像 this one 这样的文章,这些文章证实了上述内容
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
这可能会干扰默认行为。

【问题讨论】:

    标签: macos docker x86-64


    【解决方案1】:

    我认为我的问题与this moby issue有关。

    修复非常简单,因为我只需要添加--platform 参数,在我的情况下为linux/arm 或linux/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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 2021-07-06
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 2018-06-27
      相关资源
      最近更新 更多