运行 在 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 -a
和 file myapp
[=38 的输出=]
- 根据 this thread,运行在虚拟机(windows 主机)的共享文件夹中设置一个文件可能会导致问题 --> 尝试将 myapp 复制到共享文件夹之外文件夹
我创建了一个非常简单的应用程序来输出一些文本。
我的开发环境是 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 -a
和file myapp
[=38 的输出=] - 根据 this thread,运行在虚拟机(windows 主机)的共享文件夹中设置一个文件可能会导致问题 --> 尝试将 myapp 复制到共享文件夹之外文件夹