【问题标题】:Docker: Using buildx to support multiple architecture, do I need it on the parent image?Docker:使用 buildx 支持多种架构,我需要在父镜像上使用它吗?
【发布时间】:2021-06-07 18:09:04
【问题描述】:

Docker Forum 上发布以下内容后,我正在这里尝试。

我已经尝试了文档中解释的 buildx 命令(来自我基于 Intel 的 Mac):

# This normally works with build, without buildx
git clone https://github.com/Rothamsted/knetminer
cd knetminer
# buildx is the new thing I'm trying, to have multi-arch support
docker buildx build --platform linux/amd64,linux/arm64 -t knetminer/knetminer -f docker/Dockerfile --push .

但是,当我在 ARM64 上尝试发布的图像时,我仍然得到通常的结果: standard_init_linux.go:211: exec 用户进程导致“exec 格式错误”

buildx 是否足以获取多架构镜像?还是我需要更多(例如,实际上支持 ARM 的 Linux 映像)?

我的图像是基于另一个,它是基于 Tomcat +Linux 映像。我需要在所有父节点上重新运行 buildx 吗?

对于那些对细节感兴趣的人,这是关于从代码库 documentation here 为我们自己的应用程序构建图像。

提前致谢。

【问题讨论】:

  • 父镜像是否在arm64上运行,是否为每个平台构建?请附上minimal reproducible example,包括我们可以构建的 Dockerfile 以重现您的错误。
  • 可能上面的图像没有 ARM 风格。我意识到我需要它,我会努力解决它。上面的命令应该足以重现我的情况,因为所有涉及的图像都在 dockerhub 上并从那里自动下载。
  • 上面的命令不足以重现你的情况:error: could not find docker: stat docker: no such file or directory
  • 好的,我已经添加了您需要的部分,但实际上它适用于想要构建的任何类型的图像。其实下面我已经得到了很好的答案。

标签: docker buildx


【解决方案1】:
standard_init_linux.go:211: exec user process caused “exec format error”

当您尝试在您的设备上为其他架构运行映像时,会发生这种情况。

您的基础映像也必须支持所选架构。因此,如果它不支持您的架构,您必须自己为您的架构构建父级。

在 dockerhub 中,您可以在 tags 下看到支持的架构。 或者,您可以使用docker image inspect 命令。

【讨论】:

    猜你喜欢
    • 2021-05-23
    • 1970-01-01
    • 2022-07-14
    • 2023-02-08
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    相关资源
    最近更新 更多