Docker“写时复制(CoW)”策略

问题描述 投票:0回答:1

我正在阅读有关Docker的内容,我也读到了一些我不明白的内容。 写时复制 (CoW) 策略我知道它的一般含义,但是

1:这在 Docker 中意味着什么?

2: 为什么在Docker中使用这个?

docker
1个回答
7
投票

写时复制(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

enter image description here 这不是确切的图像(缺少删除操作)。只是为了展示它的概念。可以添加相应的操作并可以关联。


注意: 当您查看图像时,请从俯视图看。

注意: 文件系统属性(例如文件所有权和权限)的更改与文件更改的记录方式相同。修改大量文件的文件系统属性时要小心,因为这些文件可能会被复制到执行更改的层中。

© www.soinside.com 2019 - 2024. All rights reserved.