【问题标题】:Run Go app created in windows in Docker container (Ubuntu)在 Docker 容器(Ubuntu)中运行在 Windows 中创建的 Go 应用程序
【发布时间】:2017-06-27 03:27:23
【问题描述】:

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

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

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

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

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

在 windows 中,当我运行我的 exe 文件时,我有这个输出,我想要在 Ubuntu 中得到相同的输出。

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

【问题讨论】:

  • 你试过了吗? ./myapp
  • 您写了将结果复制到的位置,而不是从哪里获取。 build 命令使用的目标目录不是 install 命令。
  • 我在运行构建后从 src/myProject 文件夹中获取了结果。新文件出现在那里,我将它复制到容器中

标签: ubuntu go docker docker-container


【解决方案1】:

在 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 的输出
  • 根据this thread,在VM的共享文件夹中运行文件(带有windows主机)可能会导致问题-->尝试将myapp复制到共享文件夹之外

【讨论】:

  • 这样更好,在我按照你说的那样打电话之后我有'./myapp: cannot execute binary file: Exec format error' :) 所以还有另一个问题
  • 更新了答案,告诉我这是否解决了你的问题。
  • 好像是可执行的。 >> root@7dd1655ae5db:/__shared# ls -l >> 总计 1764 >> -rwxr-xr-x 1 根根 1804288 2017 年 2 月 9 日 myapp
  • 简单测试表明这不是共享文件夹问题:) 我尝试运行“file myapp”命令并看到“bash: file: command not found”。你能告诉我是否需要安装一些东西来使用这个命令,或者可能还有其他的:) 无论如何,非常感谢!
  • bash 通常在/bin/bash 下。试试echo $PATH。如果为空,请使用export PATH=/bin/bash 并重试。对于此类问题,我建议先在google上搜索,如果您自己无法解决,可能会再发布一个问题。我们可以考虑回答这个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
相关资源
最近更新 更多