我可以访问docker映像中间层中的文件吗?

时间:2019-10-28 22:55:27

标签: docker dockerfile

我有如下所示的dockerfile。我添加一些文件以构建应用程序,然后将其删除。我将其推送到Amazon ECR存储库。有人可以访问中间层中已删除的文件吗?

FROM X
...
ADD Y Z
...
RUN rm Z
...

1 个答案:

答案 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的完整映像构建的容器中找不到它)