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

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

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

它build立正确,文件在那里:

 $ 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,但是问题在于文件没有find:

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

这里发生了什么? 我无法find问题(该文件在主机系统中正常工作,我可以看到它在docker中的内容

我发现这是因为架构。 容器运行的是x86_64映像(默认debian:squeeze),文件位于i386。

红鲱鱼是因为文件没有find,没有提到文件本身,但文件加载器 …现在这是一个有用的错误信息…

要排除这一点,只需安装i386库。 将这个添加到dockerfile的Ubuntu基础镜像将解决您的问题:

  RUN apt-get install -y ia32-libs 

对于其他人(甚至更新的Ubuntu镜像 ),这可能会变得棘手。