我无法在Docker容器中运行任何二进制文件。
Dockerfile:
FROM ubuntu:eoan AS compiler-build
RUN apt-get update && \
dpkg --add-architecture i386 && \
apt-get install -y gcc \
gcc-multilib \
make \
cmake \
git \
python3.8 \
bash
WORKDIR /home
ADD . /home/pawn
RUN mkdir build
WORKDIR /home/build
ENTRYPOINT ["/bin/bash"]
CMD ["/bin/bash"]
字符串
我甚至不能使用file
内置:
[root@LAPTOP-EJ5BH6DJ compiler]:~/dev/private/SAMP/compiler (v13.11.0) (master) dc run compiler file bash
/usr/bin/file: /usr/bin/file: cannot execute binary file
型
4条答案
按热度按时间q5lcpyga1#
从this forum thread:
当您在入口点中使用没有“-c”参数的shell时,会发生此错误
因此,如果您将
Dockerfile
更改为字符串
然后你可以运行二进制文件。
请注意
/bin/bash
选项的用途,参见手册页:-l
:使bash像登录shell一样被调用-c
:如果存在-c
选项,则从第一个非选项参数command_string
读取命令。如果command_string
之后有参数,则第一个参数被分配给$0
,其余参数被分配给位置参数。分配给$0
设置shell的名称,该名称用于警告和错误消息。此外,this article是一本关于如何同时使用
ENTRYPOINT
和CMD
以及它们的区别的值得一读的书。编辑:Here是另一篇文章,它介绍了一个使用
echo
内置shell的简单(但比第一篇文章更清晰)示例。**编辑:**这里是我链接的第二篇文章中的一个小例子的改编:
的数据
注意
ls /etc
周围的"
。如果没有引号,参数/etc
似乎不会像我期望的那样传递给ls
命令。zf9nrax12#
入口点似乎不能指向
/bin/bash
。删除ENTRYPOINT ["/bin/bash"]
就足以让它工作。ki0zmccv3#
我遇到了同样的错误。与其他答案不同,我的错误与我的
docker run
参数有关:字符串
我不需要添加
bash
,因为我的Dockerfile中已经有了这个:型
xxhby3vn4#
有时我们无法控制镜像的Dockerfile,但它的原始入口点有问题。
我们可以覆盖它的入口点来调试问题:
字符串