首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用docker run命令时出现"Exec format error“

使用docker run命令时出现"Exec format error“
EN

Stack Overflow用户
提问于 2018-10-23 07:45:32
回答 2查看 4.8K关注 0票数 1

我有这个基于Golang的Dockerfile:

代码语言:javascript
复制
FROM golang:latest

RUN mkdir -p /app

WORKDIR /app

COPY bin/huru .

CMD ./huru

我检查了一下,huru二进制文件在工作目录中。我得到了这个错误:

/bin/sh: 1:./huru: Exec格式错误

有人知道这是怎么回事吗?"docker build“成功,但"docker run”失败,并出现该错误。

EN

回答 2

Stack Overflow用户

发布于 2018-10-23 07:55:03

出现"Exec format error“的原因很简单,因为我将基于OSX/MacOS构建的二进制文件复制到Docker镜像中,并尝试在Linux容器中运行该二进制文件。这不管用。

下面是为我工作的Dockerfile:

代码语言:javascript
复制
FROM golang:latest

RUN mkdir -p /app

WORKDIR /app

COPY . .

ENV GOPATH /app

RUN go install huru

ENTRYPOINT /app/bin/huru

在我的主机fs上,我的项目结构是这样的:

代码语言:javascript
复制
$GOPATH/
      src/
        huru/
      .dockerignore
      Dockerfile

我运行:

代码语言:javascript
复制
docker build -t foo .
docker run foo

我的.dockerignore文件包含:

代码语言:javascript
复制
.vscode
bin
pkg
票数 3
EN

Stack Overflow用户

发布于 2019-09-21 08:38:15

您可以在MacOS中为目标架构构建应用程序(huru),然后将其复制到docker映像中。要为目标架构构建,您必须使用以下格式的命令:env GOOS=linux GOARCH=amd64 go build -o application main.go这有一个额外的优势,即拥有干净的dockerfile和更小的镜像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52939149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档