我正在尝试使用Dockerfiles生成Docker镜像,序列如下
1)使用dokerfile创建图像,该文件将复制图像中的abc.txt(大小为200kb)
2)使用另一个docker文件创建另一个图像,该文件将使用先前生成的图像(在步骤(1)中)作为基础图像并复制文件abc.txt(附加数据且大小= 400kb)
当我检查第二个图像的层时,它显示的基本图像层的第二层由于200kb文件(abc.txt)而具有200kb的大小,而顶层由于400kb文件(abc.txt)而具有400 kb的顶层
我期望的是在顶层,只有abc.txt文件的200kb更改应该出现在第二个图像中,但是我这样做的情况并非如此。
我还有其他方法可以实现这一目标吗?
任何的意见都将会有帮助。
这些是我的dockerfile内容
:-
(1)对于第一张图片,并且abc.txt大小为200kb时:
从ubuntu
复制abc.txt /home/root/abc.txt
在此之后,我使用
docker build -t ubuntu2。
(2)对于第二张图片,当我附加abc.txt导致大小为400kb时:
来自ubuntu2
复制abc.txt /home/root/abc.txt
我修改了abc.txt并用以上内容覆盖了现有的Dockerfile
并使用构建图像
docker build -t ubuntu3。
最佳答案
在您的情况下,您将文件abc.txt
替换为另一个具有相同名称的文件,因此所做的更改是删除和添加文件。在我看来,只是有所不同,您必须使用RUN
命令而不是COPY
这样的命令:
RUN echo "data to add" >> /home/root/abc.txt
关于docker - 如何使docker为基础镜像中预先存在的文件更改仅生成差异层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51057186/