Docker:从头开始时,无法在ADD后执行RUN命令

我试图从“scratch”图像开始为ARM架构构build一个定制的Linux Alpine docker。 我不明白为什么执行ADD后我不能执行任何运行命令。 这是我的Dockerfile:

FROM scratch ADD rootfs.tar / MAINTAINER Vittorio_Cozzolino RUN apk add nodejs 

这是自动构build完成时的输出(最后一行包含错误):

 Client: Version: 1.8.1 API version: 1.20 Go version: go1.4.2 Git commit: d12ea79 Built: Thu Aug 13 02:49:29 UTC 2015 OS/Arch: linux/amd64 Server: Version: 1.8.3-rc1 API version: 1.20 Go version: go1.4.2 Git commit: 6f21aba Built: Mon Sep 28 20:03:03 UTC 2015 OS/Arch: linux/amd64 Step 0 : FROM scratch ---> Step 1 : ADD rootfs.tar / ---> dd771ffd56ea702 Step 2 : MAINTAINER Vittorio_Cozzolino ---> 825fc4c990c8a33 Step 3 : RUN apk add nodejs [91mexec: "/bin/sh": stat /bin/sh: no such file or directory 

实际上, /bin/sh存在,事实上,如果我运行CMD ["/bin/sh"]我不会收到任何错误。 有人能帮我一下吗?

CMD ["/bin/sh"]是要运行的默认命令的简单声明,因此它将始终工作。

检查tar是否确实解压缩,因为在9541中有类似的问题 :将Dockerfile限制为ADD指令,并使用 docker docker exec或简单的ls来查看那里(以及拥有哪个所有者/权限)的内容。
如果Dockerfile抱怨缺less/bin/sh ,而/bin/sh在tar档案中,那很可能是因为档案没有正确解压。