文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Docker 镜像执行 golang 可执行文件:exec /usr/local/go/bin/go: exec 格式错误

2024-02-09 10:15

关注

php小编苹果在使用Docker时可能会遇到一个常见的错误: "Docker 镜像执行 golang 可执行文件:exec /usr/local/go/bin/go: exec 格式错误"。这个错误通常是由于镜像中的golang可执行文件没有正确执行所导致的。解决这个问题的方法有很多,包括检查golang可执行文件的权限、查看可执行文件是否可访问、检查执行文件的路径是否正确等。通过解决这个问题,可以确保在Docker中正确执行golang可执行文件,提高代码开发的效率和稳定性。

问题内容

我知道如果 go 可执行文件要在另一台计算机上运行,​​我需要指定它的目标平台。我正在使用 m1 芯片在苹果机器上构建 docker 映像:

dockerfile

from --platform=linux/amd64 golang:alpine as build

workdir /

add go.mod .
add go.sum .
run go mod download
copy . .
run cgo_enabled=0 goos=linux goarch=amd64 go build -ldflags="-s -w" -o .

from --platform=linux/amd64 scratch

workdir /app
copy --from=build /foo /foo

cmd ["./foo"]

这似乎有效,因为在构建输出后检查容器

"architecture": "amd64",
"os": "linux"

但是当我现在使用 docker-compose 在 linux 服务器上启动映像时,出现错误: exec /usr/local/go/bin/go: exec format error

docker-compose.yml

foo:
    environment:
      - PORT=${PORT}
    image: docker.io/name/foo
    platform: linux/amd64
    ports:
      - "8000:8000"
    restart: always

我对 docker 还很陌生,所以我想我在这里遗漏了一些非常明显的东西。

解决方法

首先,我可以确认您已成功构建 amd64 二进制文件,因此这不是 go 问题。

如果我运行您的映像(在 amd64 linux 系统上),我不会收到您报告的相同错误。鉴于此 docker-compose.yaml

foo:
    environment:
      - port=${port}
    image: docker.io/chedched/foo
    platform: linux/amd64
    ports:
      - "8000:8000"
    restart: always

运行 docker-compose up 时,我看到:

error: for images_foo_1  cannot start service foo: failed to create shim task:
oci runtime create failed: runc create failed: unable to start container
process: exec: "./foo": stat ./foo: no such file or directory: unknown

发生这种情况是因为您设置了 workdir /app,这使得 app 成为映像中的当前工作目录,但您已将二进制文件安装为 /foo。您需要:

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯