我正在尝试从“临时”图像开始为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"]
,我不会收到任何错误。谁能在这帮助我?
答案 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存档中......很可能存档没有正确解压缩。