Dockerfile 在本地计算机中编译但在 docker 自动构建中心失败

Dockerfile compile in local machine but fails in docker hub for automated build

我正在尝试通过 linking 我的 github repo 在 docker 中心创建一个自动构建 docker 图像,其中包含一个 Docker 文件。此图像用于 Raspberry Pi 3(可以在 Docker 文件中看到)。虽然 Docker 文件在 Raspberry Pi 中工作正常,但在 x86_64 GNU/Linux[=28= 中出错] 机器,也在 Docker hub 中编译失败。这是来自 Docker hub 的日志。 docker 集线器和 x86_64 GNU/Linux 机器中的最终错误相同。

Building in Docker Cloud's infrastructure...
Cloning into '.'...
KernelVersion: 4.4.0-79-generic
Arch: amd64
BuildTime: 2017-03-28T19:26:53.326478373+00:00
ApiVersion: 1.27
Version: 17.03.1-ee-2
MinAPIVersion: 1.12
GitCommit: ad495cb
Os: linux
GoVersion: go1.7.5
Starting build of index.docker.io/swapnil18/docker-swarm-arm-socat:latest...
Step 1/11 : FROM resin/raspberrypi3-alpine

 ---> ca84ecc9fee4

Step 2/11 : MAINTAINER Swapnil Das <dasswapnil96@gmail.com>

 ---> Running in 2a99be7f728e

 ---> e4c7fdd1bc5b

Removing intermediate container 2a99be7f728e

Step 3/11 : ARG "version=0.1.0-dev"

 ---> Running in 1019fe4333d4

 ---> d50c71235386

Removing intermediate container 1019fe4333d4

Step 4/11 : ARG "build_date=5/7/17"

 ---> Running in cbf271f27274

 ---> c9af4b356b3c

Removing intermediate container cbf271f27274

Step 5/11 : ARG "commit_hash=unknown"

 ---> Running in 1778288bf297

 ---> 35d52f36b527

Removing intermediate container 1778288bf297

Step 6/11 : ARG "vcs_url=unknown"

 ---> Running in db86bc110c3d

 ---> 9062830e7754

Removing intermediate container db86bc110c3d

Step 7/11 : ARG "vcs_branch=unknown"

 ---> Running in 919c08a0f584

 ---> 9532842acc1b

Removing intermediate container 919c08a0f584

Step 8/11 : LABEL org.label-schema.vendor "Personal" org.label-schema.name "Socat" org.label-schema.description "Exposes to a defined OUTPUT PORT the INPUT from a TCP endpoint." org.label-schema.usage "/src/README.md" org.label-schema.url "https://github.com/swapnil96/docker-swarm-arm-socat/blob/master/README.md" org.label-schema.vcs-url $vcs_url org.label-schema.vcs-branch $vcs_branch org.label-schema.vcs-ref $commit_hash org.label-schema.version $version org.label-schema.schema-version "1.0" org.label-schema.docker.cmd.devel "" org.label-schema.docker.params "IN=Input,OUT=Output" org.label-schema.build-date $build_date

 ---> Running in 641e40ae7219

 ---> 9c5d5da14397

Removing intermediate container 641e40ae7219

Step 9/11 : ENV "IN 172.18.0.1:4999" "OUT 4999"

 ---> Running in 866b338a1588

 ---> 3c046f12eb1e

Removing intermediate container 866b338a1588

Step 10/11 : RUN apk add --no-cache socat

 ---> Running in 86d0de61864f

[91mstandard_init_linux.go:178: exec user process caused "exec format error"
[0m
Removing intermediate container 86d0de61864f

The command '/bin/sh -c apk add --no-cache socat' returned a non-zero code: 1

正如上次所见,它因 The command '/bin/sh -c apk add --no-cache socat' returned a non-zero code: 1 而失败。 Docker文件是否存在架构问题?或者基础图像 resin/alpine 有问题。我已经为 Raspberry Pi 构建了其他 Docker 文件,并且都编译良好。

出于工作目的,我将只推送 Raspberry Pi 中内置的图像。但是拥有一个自动构建存储库要好得多。所以如果我犯了一些明显的错误,请纠正我。

这是 link 我在 docker 中心 link 中的其他构建。

PS:我已经尝试过 Whosebug 中提到的其他选项。我尝试 post 其他问题的 links 但由于不到 10 的声誉我只给了 post 2 links.

这是因为Raspberry Pi 运行s on arm and docker hub不支持 armx86,如果您确实希望在 docker 集线器上构建 docker 映像,则需要编辑您的 docker 图片。我以前做过这个,但它很旧,但看看 resin io's work or my own customisation based off of that over here。此方法使用 qemu 模拟 arm 架构,允许图像 运行 在 arm 设备上本地 [=29] =] 同时仍然能够在 x86 平台上由 qemu 编译,例如 docker hub.