所以我在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镜像 ),这可能会变得棘手。