在Docker容器(Ubuntu)中运行windows中创建的Go应用程序
我创建了一个非常简单的应用程序,可以输出一些文本 我的开发环境是Windows+Docker for Windows。我创建了ubuntu容器,并在Windows中为ubuntu构建了应用程序在Docker容器(Ubuntu)中运行windows中创建的Go应用程序,ubuntu,go,docker,docker-container,Ubuntu,Go,Docker,Docker Container,我创建了一个非常简单的应用程序,可以输出一些文本 我的开发环境是Windows+Docker for Windows。我创建了ubuntu容器,并在Windows中为ubuntu构建了应用程序 set GOARCH=amd64 set GOOS=linux go build -o "myapp" 然后我将“myapp”文件复制到共享文件夹,并在容器的共享文件夹中查看它。 在我尝试在容器内运行它之后,出现了一个错误 为什么我不能运行它?它是否构建错误,或者我是否试图以错误的方式执行它 在win
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
有关此主题的更多信息,请参阅
更新:错误无法执行二进制文件:Exec格式错误“
可能来自:
- 系统架构与文件-->不匹配,请确保您的ubuntu计算机为64位版本,并比较
和uname-a
file myapp
- 根据,在VM的共享文件夹内运行文件(使用windows主机)可能会导致问题-->尝试将myapp复制到共享文件夹外
/myapp
您在将结果复制到的位置写入,但不是从获取结果的位置写入。build命令使用了install命令以外的另一个目标目录。在运行build之后,我从src/myProject文件夹获取了结果。新文件出现在那里,我将其复制到containerIt's better,在我按您所说的那样调用之后。/myapp:无法执行二进制文件:Exec format error':)因此还有另一个问题更新了答案,请告诉我这是否解决了您的问题。它似乎是可执行的。>>root@7dd1655ae5db:/\uuu shared#ls-l>>total 1764>>-rwxr-xr-x 1 root root 1804288 2017年2月9日myappSimple测试表明这不是共享文件夹问题:)我尝试运行“file myapp”命令,并看到“bash:file:command not found”。你能告诉我,如果我需要安装一些东西来使用这个命令,或者可能有其他的:)无论如何,非常感谢!bash通常位于/bin/bash
下。请尝试echo$PATH
。如果为空,请使用导出路径=/bin/bash并重试。对于这类问题,我建议你先在谷歌上搜索,如果你自己都搞不懂的话,可以再发一个问题。我们能回答这个问题吗?