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

无法在docker/bin/sh内运行go程序:<;计划>;:找不到,docker,go,Docker,Go,我正在WSL(windows上的bash)中构建go程序,将输出文件夹作为卷装入centos docker容器中,并尝试运行该程序。尝试这样运行程序时: docker exec -it <container-instance> /bin/sh # ./<program-name> docker exec-it/bin/sh # ./ 我得到: /bin/sh: ./<program-name>: not found /bin/sh:./:未找到 给出了

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

docker exec -it <container-instance> /bin/sh
# ./<program-name>
docker exec-it/bin/sh
# ./
我得到:

/bin/sh: ./<program-name>: not found
/bin/sh:./:未找到

给出了什么?

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

在解决问题方面做得很好。请接受你自己的回答,也许有人会觉得这很有帮助:在我的例子中,我有一个多阶段Dockerfile,第一阶段是构建Go可执行文件,然后在第二阶段复制并运行。问题是第一阶段使用的是基于Debian的图像,而第二阶段使用的是基于Alpine的图像。在两个阶段使用相同的图像后,一切都开始工作,无需任何其他设置:)