无法在Docker容器内执行二进制文件,但从主机执行

时间:2019-03-15 18:08:33

标签: docker go

我有一个基于composer:1.8(基于php:7-alpine)的docker容器。

在容器内,我通过php下载了tar.gz,将其解压缩并解压缩,效果很好。 它包含我要执行的Go二进制文件。 在docker容器中执行二进制文件时,出现以下错误消息:./bin/<binary>: No such file or directory。在主机上,我可以很好地执行在Docker容器中下载的二进制文件。

如果很重要,我可以使用以下命令启动docker容器:docker run -it --rm --volume=$PWD:/usr/src/myapp -u $(id -u):$(id -g) --name ec ec /bin/bash

我还尝试在安装readelf -a <binary>后运行它,但这没有任何效果。

bash-4.4$ ls -l <binary> && echo userid: $(id -u) && echo groupid: $(id -g) && uname -om && ./<binary>
-rwxr-xr-x    1 1000     985        7582050 Mar 15 17:09 <binary>
userid: 1000
groupid: 985
x86_64 Linux
bash: ./<binary>: No such file or directory

我该怎么做才能使这项工作成功?

1 个答案:

答案 0 :(得分:2)

这是因为二进制文件是使用glibc编译的,而alpine是使用musl编译的。 我已经解决了在构建时将二进制文件CGO_ENABLED=0传递给我的问题