为什么 docker 找不到我添加的文件?

为什么 docker 找不到我添加的文件?

所以我使用 ADD 在 docker 文件中添加了一个文件

...
ADD flvcheck /usr/local/bin/flvcheck

它构建正确并且文件就在那里:

$ docker run --rm=true -ti image ls -l /usr/local/bin/flvcheck
-rwxrwxr-x 1 root root 1659908 May 20 07:56 /usr/local/bin/flvcheck

但是当我尝试运行它时我得到了:

$ docker run --rm=true -ti image /usr/local/bin/flvcheck
2014/05/20 08:43:25 no such file or directory

我甚至安装了 strace 并使用了 -D=true,但问题是找不到该文件:

execve("/usr/local/bin/flvcheck", ["flvcheck"], [/* 8 vars */]) = -1 ENOENT (No such file or directory)

这是怎么回事?我找不到问题所在(该文件在主机系统中运行正常,我可以在docker中看到它的内容

答案1

我发现这是由于架构所致。容器正在运行 x86_64 映像(默认 debian:squeeze),文件位于 i386 中。

红鲱鱼是因为文件未找到,并没有提到文件本身,而是文件加载器...这是一个有用的错误消息...

要解决这个问题,只需安装 i386 库。对于 ubuntu 基础镜像,将其添加到 dockerfile 将解决您的问题:

 RUN apt-get install -y ia32-libs

对于其他人(甚至较新的ubuntu 图像),这可能会变得更加棘手。

相关内容