docker 图片 - merged/diff/work/LowerDir GraphDriver 组件

docker image - merged/diff/work/LowerDir components of GraphDriver

下面是redis镜像的manifest文件入口片段(docker inspect image redis)

"GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/bd512eb256c8aa56cbe9243d440a311820712d1a245fe6f523d39d19cd6c862d/diff:/var/lib/docker/overlay2/7fa1e90f35c78fc83c3a
4b86e36e45d742383b394adf9ce4cf9b339d919c9cbe/diff:/var/lib/docker/overlay2/2c1869386b5b8542959da4f0173a5272b9703326d619f27258b4edff7a1dbbf9/diff:/var/lib/docker/overlay2
/23ba3955c5b72ec17b9c409bd5233a3d92cbd75543c7d144b364f8188765788e/diff:/var/lib/docker/overlay2/87d8a92919103e8ff723221200acb36e17c611fa499571ab183d0f51458e6f24/diff",
                "MergedDir": "/var/lib/docker/overlay2/e503ed41978e99fe9b71a4225763a40b7988e9a4f31d4c06ef1ec1af46b0b6ab/merged",
                "UpperDir": "/var/lib/docker/overlay2/e503ed41978e99fe9b71a4225763a40b7988e9a4f31d4c06ef1ec1af46b0b6ab/diff",
                "WorkDir": "/var/lib/docker/overlay2/e503ed41978e99fe9b71a4225763a40b7988e9a4f31d4c06ef1ec1af46b0b6ab/work"
            },
            "Name": "overlay2"
        },

其中 overlay2 文件系统被 docker 图像和容器使用。

GraphDriver 清单条目中,

LowerDir / MergedDir / UpperDir / WorkDir 表示什么?

LowerDir:这些是覆盖文件系统的 read-only 层。对于 docker,这些是按顺序组装的图像层。

UpperDir:这是覆盖文件系统的 read-write 层。对于 docker,这相当于包含容器所做更改的容器特定层。

WorkDir: 这是覆盖所需的目录,它需要一个空目录供内部使用。

MergedDir:这是覆盖文件系统的结果。 Docker 当 运行 容器时有效地 chroot 到这个目录。

有关覆盖文件系统的更多信息(overlay2 是较新的版本,但我认为没有任何用户可见的更改),请参阅内核文档:https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt