如何为基于 Qnap Arm 的服务器构建 Docker 文件的 Arm 版本

How do I build an Arm version of Docker File for Qnap Arm based Server

我的应用程序有一个 Docker 文件,我使用 Docker Hub 来构建它。 这在基于 Intel 的 Synology DS218+ Disk Station 上运行良好。

QnapIntelArm 设备上支持 Docker Container Station 软件,我购买了一个 TS131P 来测试它,但失败了 exec format error。显然我必须构建图像的 Arm 版本,但我该怎么做?

我能否以某种方式在 Qnap 本身上构建映像?

更新

所以我的基本图像是 openjdk:8-jre-alpine,所以我在 DockerHub 上找到了一个与此等效的 arm32,https://hub.docker.com/r/arm32v6/openjdk/ 所以现在:

但是现在构建在第二行失败了

RUN apk --no-cache add \
       curl \
       tini

[91mstandard_init_linux.go:190: exec user process caused "exec format error"

因为我使用的是 arm 映像,所以我认为应该为 arm 编译 apk,或者我是否需要告诉 Docker Hub 在 Arm 而不是 Intel 上构建?

简单的答案是你必须在 arm 服务器上构建一个 arm 图像,所以我在 Arm nas 本身上构建,因为它支持 Docker,这就是我所做的

  • 确保 nas 服务器
  • 上的 ContainerStation 运行
  • ssh nas 服务器(从 PC)
  • docker 构建 buildfile docker 登录
  • --输入用户名用户名
  • --输入密码密码
  • docker 图像(获取构建图像的 imageId)
  • docker 标签 imageId repoName/imageName:最新
  • docker推

这足以让 arm32 版本可以安装在 arm32 机器上。

目前我有两张独立的图片,一张用于 Intel,一张用于 Arm。我知道有一种方法可以将多个图像组合成一个超级图像,但我还没有尝试过。 repoName/imageName:最新