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

时间:2015-10-02 14:34:42

标签: docker dockerfile

我正在尝试从“临时”图像开始为ARM体系结构构建自定义Linux Alpine docker。我不明白为什么在执行ADD后我无法执行任何RUN命令。这是我的Dockerfile:

FROM scratch
ADD rootfs.tar /

MAINTAINER Vittorio_Cozzolino

RUN apk add nodejs

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

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"],我不会收到任何错误。谁能在这帮助我?

1 个答案:

答案 0 :(得分:2)

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

检查tar是否确实已解压缩,因为similar issue in 9541:将Dockerfile限制为ADD指令,use docker exec or a simple ls查看其中的内容(以及哪个所有者) /许可)。
如果Dockerfile抱怨缺少/bin/sh,并且/bin/sh在tar存档中......很可能存档没有正确解压缩。