运行在Docker容器(Ubuntu)的窗口中创build的应用程序

我创build了非常简单的应用程序,用于输出一些文本。

我的开发环境是Windows + Docker for Windows。 我创build了Ubuntu的容器,并在Ubuntu的Windows中构build我的应用程序

set GOARCH=amd64 set GOOS=linux go build -o "myapp" 

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

在这里输入图像说明

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

在Windows中,当我运行我的exe文件时,我有这个输出,我想在Ubuntu中有相同的东西。

在这里输入图像说明

更新build议我尝试./myapp,并存在Exec格式错误

在这里输入图像说明

在Ubuntu和其他Linux系统上,只是myapp会尝试从PATH环境variables中findmyapp 。 要专门查找当前目录中的可执行文件,您需要使用:

 ./myapp 

或者使用完整的path:

 /__shared/myapp 

更新:为了这个工作,你的文件需要是可执行的。 您可以使用ls -l来validation它:

 ls -l -rwxrwxr-x 1 user user 0 Feb 9 09:45 myapp 

如果在第一列中没有看到至less一个“x”,则需要运行:

 chmod +x myapp 

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

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

  • 系统架构和文件之间不匹配 – >确保你的Ubuntu机器是64位版本,并比较uname -a的输出uname -afile myapp
  • 根据这个线程 ,运行虚拟机的共享文件夹(与Windows主机)内的文件可能会造成麻烦 – >尝试将myapp复制到共享文件夹之外