我正在阅读有关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
Run Code Online (Sandbox Code Playgroud)
该命令将产生输出:
A /mychange
Run Code Online (Sandbox Code Playgroud)
第 2 层:
docker container run --name mod_busybox_delete busybox:latest rm /etc/passwd
docker container diff mod_busybox_delete
Run Code Online (Sandbox Code Playgroud)
这次,输出将有两行:
C /etc
D /etc/passwd
Run Code Online (Sandbox Code Playgroud)
第 3 层:
docker container run --name mod_busybox_change busybox:latest touch /etc/passwd
docker container diff mod_busybox_change
Run Code Online (Sandbox Code Playgroud)
diff 子命令将显示两个更改:
C /etc
C /etc/passwd
Run Code Online (Sandbox Code Playgroud)
这不是确切的图像(缺少删除操作)。只是为了展示它的概念。可以添加相应的操作并可以关联。
注意:当您查看图像时,请从俯视图查看。
注意:文件系统属性(例如文件所有权和权限)的更改与文件更改的记录方式相同。修改大量文件的文件系统属性时要小心,因为这些文件可能会被复制到执行更改的层中。
| 归档时间: |
|
| 查看次数: |
2775 次 |
| 最近记录: |