尝试在 Docker 中运行二进制文件返回错误 127

时间:2021-02-09 14:29:31

标签: docker

我正在尝试从 Docker 容器内的代码运行二进制文件,但出现“未找到”127 错误。

我尝试运行的二进制文件位于 ~/blah/src/vendor/bin/wkhtmltopdf-amd64 它是与 PHP Composer 一起安装的。

当我在 Linux(实际上是 Windows 的 WSL)中转到该目录时,我可以看到该文件并运行它就好了。

但是当我尝试进入容器时(使用 docker exec -it php /bin/sh),我看到了:

/var/www/html/vendor/h4cc/wkhtmltopdf-amd64/bin # whoami
root
/var/www/html/vendor/h4cc/wkhtmltopdf-amd64/bin # ls -la
total 38880
drwxr-xr-x    2 laravel  laravel       4096 Feb  9 18:54 .
drwxr-xr-x    3 laravel  laravel       4096 Jan 15  2018 ..
-rwxr-xr-x    1 laravel  laravel   39804584 Jan 15  2018 wkhtmltopdf-amd64
/var/www/html/vendor/h4cc/wkhtmltopdf-amd64/bin # ./wkhtmltopdf-amd64
/bin/sh: ./wkhtmltopdf-amd64: not found

如果它就在那里怎么会找不到?!

我希望在容器中运行的代码(PHP 代码)能够运行该二进制文件,但它不能。

注意:我不想将此命令作为 Docker 命令运行。 Docker 容器是 PHP,该容器内的 PHP 正在尝试运行此命令。

2 个答案:

答案 0 :(得分:0)

我通过使用不同的 docker 镜像解决了这个问题。我使用了 php:7.4-fpm-alpine

而不是 php:7.4-fpm

这也允许我执行 bash 而不是 /bin/sh

在我的 php.dockerfile 中,我不得不添加一行来运行 apt-get install 一些东西。就我而言,它是这些:libxrender1、fontconfig、libxext6

答案 1 :(得分:-1)

请参阅https://superuser.com/questions/1511681/docker-not-found-and-invalid-handle-errors-for-linux-container-volumes-in-d

也许按照上面的帖子使用卷,因为这似乎是操作系统/Docker 相关的问题。

version: '3.4'    
volumes:
       test_vol:
          driver: local
          driver_opts:
             type: none
             device: /host_mnt/c/path/to/folder
             o: bind
相关问题