运行 在 Docker 容器 (Ubuntu) 中的 windows 中创建了 Go 应用程序

Run Go app created in windows in Docker container (Ubuntu)

我创建了一个非常简单的应用程序来输出一些文本。

我的开发环境是 Windows + Docker for Windows。我创建了 ubuntu 容器,并在 Windows 中为 ubuntu

构建了我的应用程序
set GOARCH=amd64
set GOOS=linux
go build -o "myapp"

然后我将 'myapp' 文件复制到共享文件夹,并在我的容器的共享文件夹中看到它。 在我尝试 运行 它进入容器后,出现错误

为什么我不能 运行?它是构建不正确还是我尝试以某种错误的方式执行它?

在 windows 中,当我 运行 我的 exe 文件时有这个输出,我想要在 Ubuntu.

中有相同的东西

更新 按照建议,我尝试 ./myapp 并且出现 Exec 格式错误

在ubuntu和其他linux系统上,只有myapp会尝试从PATH环境变量中找到myapp。要专门查找当前目录中的可执行文件,您需要使用:

./myapp

或使用完整路径:

/__shared/myapp

更新:要使其正常工作,您的文件必须是可执行文件。您可以使用 ls -l:

来验证它
ls -l
-rwxrwxr-x  1 user user    0 Feb  9 09:45 myapp

如果您在第一列中没有看到至少一个 'x',您需要 运行:

chmod +x myapp

有关该主题的更多信息,请参阅 understanding-linux-file-permissions

更新:错误 cannot execute binary file: Exec format error' 可能来自:

  • 系统架构与文件不匹配 --> 确保您的 ubuntu 机器是 64 位版本并比较 uname -afile myapp[=38 的输出=]
  • 根据 this thread,运行在虚拟机(windows 主机)的共享文件夹中设置一个文件可能会导致问题 --> 尝试将 myapp 复制到共享文件夹之外文件夹