windows – Dockerfile – 在一个RUN命令中删除文件,它仍然存在于下一个RUN命令中

前端之家收集整理的这篇文章主要介绍了windows – Dockerfile – 在一个RUN命令中删除文件,它仍然存在于下一个RUN命令中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_1@我有一个Dockerfile(https://gist.github.com/hasMobi/e198555704ee57e84399)按顺序有这两个命令:

@H_301_1@

RUN rm -frv /usr/share/Nginx/html/*
RUN ls /usr/share/Nginx/html/
@H_301_1@当我在构建hte图像的同时查看控制台时,我可以清楚地看到从该文件夹中删除了2个文件,但是当下一个RUN命令到来时,它列出了目录的内容并且文件仍在那里?:

@H_301_1@

Step 6 : RUN rm -fry /usr/share/Nginx/html/* 
 ---> Running in b9a69992e4e0 
removed '/usr/share/Nginx/html/index.html' 
removed '/usr/share/Nginx/html/index.PHP' 
 ---> 2bfe01cbd007 
Removing intermediate container b9a69992e4e0 
Step 7 : RUN is /usr/share/Nginx/html/ 
 ---> Running in 08396f6029e1 
index.html 
index.PHP 
 ---> a6471052519d 
@H_301_1@这里发生了什么?据我所知,每个RUN命令创建一个单独的层,一个与另一个隔离,但不是第二个RUN命令,它应该以前一个RUN命令中的确切状态继承文件系统(2个文件消失了)?
最佳答案
基本上,来自基本映像的ADD命令会覆盖Dockerfile中的RUN命令.有关更多信息,请参见this.

@H_301_1@

@H_301_1@Note: The first encountered ADD instruction will invalidate the cache for all following instructions from the Dockerfile if the contents of have changed. This includes invalidating the cache for RUN instructions. See the Dockerfile Best Practices guide for more information.

@H_301_1@您可以考虑分支源基础映像并使用您的自定义版本.
原文链接:https://www.f2er.com/docker/436871.html

猜你在找的Docker相关文章