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

时间:2017-02-09 08:12:49

标签: ubuntu go docker docker-container

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

我的开发环境是适用于Windows的Windows + Docker。我创建了ubuntu容器,并在Windows中为ubuntu构建我的应用程序

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

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

enter image description here

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

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

enter image description here

UPDATE 按照建议我尝试./myapp并且存在Exec格式错误

enter image description here

1 个答案:

答案 0 :(得分:1)

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

./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的输出
  • 根据this thread,在VM的共享文件夹内运行文件(使用Windows主机)可能会导致问题 - >尝试在共享文件夹外复制myapp