shell - "Exec format error"docker 运行命令

标签 shell docker sh dockerfile

我有这个基于 Golang 的 Dockerfile:

FROM golang:latest

RUN mkdir -p /app

WORKDIR /app

COPY bin/huru .

CMD ./huru

我检查过,huru 二进制文件在工作目录中。我收到此错误:

/bin/sh: 1: ./huru: Exec format error

谁知道那是什么? “docker build”成功,但“docker run”失败并出现该错误。

最佳答案

“Exec 格式错误”仅仅是因为我将在 OSX/MacOS 上构建的二进制文件复制到 Docker 镜像中,并试图在 Linux 容器中运行该二进制文件。那行不通。

这是对我有用的 Dockerfile:

FROM golang:latest

RUN mkdir -p /app

WORKDIR /app

COPY . .

ENV GOPATH /app

RUN go install huru

ENTRYPOINT /app/bin/huru

我的项目结构在我的主机 fs 上也是如此:

$GOPATH/
      src/
        huru/
      .dockerignore
      Dockerfile

我跑:

docker build -t foo .
docker run foo

我的 .dockerignore 文件包含:

.vscode
bin
pkg

关于shell - "Exec format error"docker 运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52939149/

相关文章:

linux - 调用未安装的例程时 Shell 脚本不会失败

python - Alpine python 3.7.7 docker:pipenv无法安装psycopg2 2.8.4和pyzmq,而在使用python 3.7.3的主机上安装良好

docker - 无法在重叠式网络上连接容器:[emerg]无效的主机

amazon-web-services - EB CLI需要 'docker' Python软件包

shell - 捕获由 Makefile 启动的后台进程的 PID

linux - bash 将每隔一个逗号更改为指向

shell - 没有这样的文件或目录 (ls) 与波浪号扩展一起使用

linux - 在 Bash 中修改子字符串而不改变字符串

windows - 在 Linux 中自动运行可移动设备

linux - 无法通过变量将带空格的文件名传递给 SCP 命令