我有如下所示的dockerfile。我添加一些文件以构建应用程序,然后将其删除。我将其推送到Amazon ECR存储库。有人可以访问中间层中已删除的文件吗?
FROM X
...
ADD Y Z
...
RUN rm Z
...
答案 0 :(得分:0)
好问题,我使用以下方法进行了测试
Dockerfile:
FROM alpine:latest
ADD secretfile.txt ./secretfile.txt
RUN rm ./secretfile.txt
中间容器被命名为ded0652b1b4b
Step 2/3 : ADD secretfile.txt ./secretfile.txt
---> Using cache
---> ded0652b1b4b
显示docker inspect ded0652b1b4b
显示(部分输出):
"Id": "sha256:a3f069abb5b5d712ec2977e185667e67083360fad3b82fbf2994cb25f137fcb3",
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ADD file:5d17740f2cfb728d9d94605430e551fddc46fda9f68caa9a3b51eabb126db393 in ./secretfile.txt " ]
然后使用该图像ID以交互模式构建容器:
docker run it "a3f069abb5b5d712ec2977e185667e67083360fad3b82fbf2994cb25f137fcb3"
ls
... run secretfile.txt sys usr
您可以看到在图像中找到了secretfile.txt
。 (当然,在从dockerfile的完整映像构建的容器中找不到它)