我正在阅读有关Docker的内容,我也读到了一些我不明白的内容。 写时复制 (CoW) 策略我知道它的一般含义,但是
1:这在 Docker 中意味着什么?
2: 为什么在Docker中使用这个?
写时复制(CoW)策略
大多数联合文件系统使用称为“写时复制”的东西,如果您将其视为“更改时复制”,则更容易理解。
当只读层(非顶层)的文件被修改时,整个文件会先从只读层复制到可写层,然后再进行更改。
这会对运行时性能和图像大小产生负面影响。
它在 Docker 中是什么意思?
让我们使用
ubuntu:latest
图像并对其进行一些操作。
第 1 层:
docker container run --name mod_ubuntu ubuntu:latest touch /mychange
docker container diff mod_ubuntu # to get the diff from a base image
此命令将产生输出:
A /mychange
第2层:
docker container run --name mod_busybox_delete busybox:latest rm /etc/passwd
docker container diff mod_busybox_delete
这次,输出将有两行:
C /etc
D /etc/passwd
第3层:
docker container run --name mod_busybox_change busybox:latest touch /etc/passwd
docker container diff mod_busybox_change
diff 子命令将显示两个更改:
C /etc
C /etc/passwd
这不是确切的图像(缺少删除操作)。只是为了展示它的概念。可以添加相应的操作并可以关联。
注意: 当您查看图像时,请从俯视图看。
注意: 文件系统属性(例如文件所有权和权限)的更改与文件更改的记录方式相同。修改大量文件的文件系统属性时要小心,因为这些文件可能会被复制到执行更改的层中。