无法在 docker /bin/sh 内运行 go 程序:<program>:找不到

Roh*_*ith 1 go docker

我正在 WSL(Windows 上的 bash)中构建 go 程序,将输出文件夹作为卷安装在 centos docker 容器中并尝试运行该程序。当尝试像这样运行程序时:

docker exec -it <container-instance> /bin/sh
# ./<program-name>
Run Code Online (Sandbox Code Playgroud)

我得到:

/bin/sh: ./<program-name>: not found
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?

Roh*_*ith 5

最初,我认为问题是因为我为错误的架构编译了 go 程序。它是为 amd64 编译的。当我尝试为 386(GOARCH=386)编译它时,它似乎启动了。经过进一步调查,该容器运行的是 centos 64 位(使用uname -m和检查getconf LONG_BIT)。最后,有效的解决方案是在编译之前设置 CGO_ENABLED=0 (请参阅此处