如何为基于 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 上运行良好。
Qnap 在 Intel 和 Arm 设备上支持 Docker Container Station 软件,我购买了一个 TS131P 来测试它,但失败了 exec format error
。显然我必须构建图像的 Arm 版本,但我该怎么做?
我能否以某种方式在 Qnap 本身上构建映像?
更新
所以我的基本图像是 openjdk:8-jre-alpine
,所以我在 DockerHub 上找到了一个与此等效的 arm32,https://hub.docker.com/r/arm32v6/openjdk/ 所以现在:
- 创建了一个新的 BitBucket 代表
- 复制到 Docker 文件
- 将 Docker 文件的第一行更改为
FROM arm32v6/openjdk:8-jre-alpine
- 在链接到此 repo
的 Docker 上创建了一个新的 Automated Build
但是现在构建在第二行失败了
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:最新
我的应用程序有一个 Docker 文件,我使用 Docker Hub 来构建它。 这在基于 Intel 的 Synology DS218+ Disk Station 上运行良好。
Qnap 在 Intel 和 Arm 设备上支持 Docker Container Station 软件,我购买了一个 TS131P 来测试它,但失败了 exec format error
。显然我必须构建图像的 Arm 版本,但我该怎么做?
我能否以某种方式在 Qnap 本身上构建映像?
更新
所以我的基本图像是 openjdk:8-jre-alpine
,所以我在 DockerHub 上找到了一个与此等效的 arm32,https://hub.docker.com/r/arm32v6/openjdk/ 所以现在:
- 创建了一个新的 BitBucket 代表
- 复制到 Docker 文件
- 将 Docker 文件的第一行更改为
FROM arm32v6/openjdk:8-jre-alpine
- 在链接到此 repo 的 Docker 上创建了一个新的 Automated Build
但是现在构建在第二行失败了
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:最新