Docker-删除上一阶段添加的文件

时间:2020-04-27 16:11:06

标签: docker dockerfile

我有一个运行caddy的容器

我正在尝试删除在Dockerfile中第16步添加的文件,我的Dockerfile中有类似的内容

FROM abiosoft/caddy:1.0.3

RUN rm /srv/index.html
RUN ls
>> index.html

我们是否有解决方案来删除在先前步骤中添加的文件?还是我唯一的解决方案是“分叉” Dockerfile并删除此行?

2 个答案:

答案 0 :(得分:0)

如果您通过链接查看图像历史记录,则会看到第13行

VOLUME [/root/.caddy /srv]

VOLUME指令意味着之后的RUN命令根本无法修改该目录。您会确切地看到要报告的结果:RUN命令显然可以成功运行,并且在单个RUN命令中,您将看到文件已更改,但不会在运行中持久存在。

RUN rm /srv/index.html \
 && echo 'ls -l in same RUN line' \
 && ls -l /srv
RUN echo 'ls -l in separate RUN line' \
 && ls -l /srv

如果不分叉原始Dockerfile,则无法撤消此操作。

答案 1 :(得分:0)

除了Dockerfile的fork之外,还有另一种选择。您可以在运行容器时挂载src,它将重写卷中的内容。例如,docker run ... -v /path/to/php/src:/srv ...会将/path/to/php/src内部的容器文件(文件结构)放入内部。