文件系统上的Docker映像

时间:2018-07-05 07:56:13

标签: docker filesystems

我尝试了解docker如何在文件系统上存储图像和图层。构建图像时,图层将显示在/var/lib/docker/image/overlay2/layerdb中,图像将显示在/var/lib/docker/image/overlay2/imagedb中。但是/var/lib/docker/overlay2/中也有文件。我想知道他们之间有什么区别。

tree /var/lib/docker/
|-- builder
|-- buildkit
|-- containerd
|-- containers
|-- image
|   `-- overlay2
|       |-- distribution
|       |-- imagedb
|       |   |-- content
|       |   |   `-- sha256
|       |   `-- metadata
|       |       `-- sha256
|       |-- layerdb
|       `-- repositories.json
|-- network
|-- overlay2
|   `-- l
|-- plugins
|-- runtimes
|-- swarm
|-- tmp
|-- trust

1 个答案:

答案 0 :(得分:0)

好吧,因为我不是Docker专家,所以我可能错了。但这是我经过一段时间研究这个主题后才得出的结论。

拉动图像时,例如docker pull node:6

然后检查图像docker inspect node:6,您会看到类似以下内容:

[
  {
    "Id": "sha256:09028f4b5ca3d043b5b3698b62defdbee3ecd8185608897c25e63a2af7e6e19c",
    ....
    "RootFS": {
        "Type": "layers",
        "Layers": [
            "sha256:dd1eb1fd7e08dc9bda0cbea31a89196c453cb218bea80ce64eeb19fadc98d262",
            "sha256:a42d312a03bb549752cfaf828dca867cb03763699732a584bb4fa119e0130760",
            "sha256:858cd8541f7e8b7b5bb9c72e1757f7c3c8d270b7e21dae30579e0df635ddeacf",
            "sha256:8451f9fe00162c8ff891c8982c5bf107cccbe1982718ef80565229ee69dd54cf",
            "sha256:cbda574aa37a39a4cdf2898aa974efaf2b6035e8a25992eb1914394b209a54fb",
            "sha256:e492023cc4f9bce9e608a6a6f2bb9f223167bab8a3d8d01581125a5dedc18524",
            "sha256:b40c77c13a01fc9208237a4a2ee330ad56b7978a81d7c3b545613d06f9d3a6bb",
            "sha256:35adca6bf7fec06b18c63a4d4fcf09e0427f61ce0788a09166a869273f894861"
        ]
    },
  }
]

/var/lib/docker/image/overlay2/imagedb/content/sha256存储图像的内容。您将可以在这里找到09028f4b5ca3d043b5b3698b62defdbee3ecd8185608897c25e63a2af7e6e19c

/var/lib/docker/image/overlay2/layerdb/sha256存储一些链接到实际图层的链。例如,如果尝试在上述检查(dd1eb1f...)中找到第一层,然后查看cache-id文件,则将看到实际的层ID。在这种情况下,我看到了4cc446db3a09d2b9146604a6e0a8da9bc37cec32a6b9e7dfa02e21235f1f2e95

现在转到/var/lib/docker/overlay2并进行搜索(4cc44...),您将找到它。我认为该目录实际上存储了所有图层。