摘要:linux下docker的目录结构,在读之前建议先读docker下的overlay2驱动的文件系统

(1)/var/lib/docker

/var/lib/docker目录如下:
linux下docker的目录结构1.jpg

/var/lib/docker/containers目录存放的是创建好的容器的和主机有关的配置,因为这类配置和本地环境有关所以不方便放入镜像之中,所以就放在这了。

linux下docker的目录结构2.jpg

/var/lib/docker/image目录主要存放镜像元数据,相当于字典中的目录,仅仅存放目录,不存放具体数据。具体数据存放在/var/lib/docker/overlay2

/var/lib/docker/overlay2主要存放镜像的具体数据,相当于字典中除去目录剩余的部分。

(2)/var/lib/docker/image/overlay2

linux下docker的目录结构3.jpg

  • /var/lib/docker/image/overlay2/repositories.json 存放镜像库的元数据
  • /var/lib/docker/image/overlay2/distribution 存放镜像的摘要diff_id

    • /var/lib/docker/image/overlay2/distribution/diffid-by-digest/sha256/目录下每个文件的名字都是一个镜像的摘要
    • /var/lib/docker/image/overlay2/distribution/v2metadata-by-diffid/sha256/目录下每个文件的名字都是一个镜像的diff_id
      打开/var/lib/docker/image/overlay2/distribution/v2metadata-by-diffid/sha256/目录下的文件可以根据文件中的digest 找到在/var/lib/docker/image/overlay2/diffid-by-digest/sha256/目录下对应的文件

    linux下docker的目录结构4.jpg

    如图/var/lib/docker/image/overlay2/distribution/v2metadata-by-diffid/sha256/03c9b9f537a4ae66d7ae7a4361e7f36e6755380107eadff3fbc11cd604c6c9b9
    对应/var/lib/docker/image/overlay2/distribution/diffid-by-
    digest/sha256/f9a83bce3af0648efaa60b9bb28225b09136d2d35d0bed25ac764297076dec1b

  • /var/lib/docker/image/overlay2/imagedb 存放镜像元数据
    如图镜像id所对应/var/lib/docker/image/overlay2/imagedb/content/sha256/下的文件名以及/var/lib/docker/image/overlay2/imagedb/metadata/sha256下的目录名

    linux下docker的目录结构5.jpg

    • /var/lib/docker/image/overlay2/imagedb/content/sha256/存放的是每个镜像的元数据。
    • /var/lib/docker/image/overlay2/imagedb/metadata/sha256/记录了这个镜像的更新时间,以及这个镜像的parent镜像。貌似只有自己在本地构建的镜像/var/lib/docker/image/overlay2/imagedb/metadata/sha256/里面才有对应记录。

    linux下docker的目录结构6.jpg

  • /var/lib/docker/image/overlay2/layerdb 存放镜像层元数据

    • /var/lib/docker/image/overlay2/layerdb/mounts目录下的文件名对应容器的container ID。存放的是可写层镜像的元数据

    linux下docker的目录结构7.jpg

    /var/lib/docker/image/overlay2/layerdb/mounts
    /5a86909765fb035cad47b8876cfe77946b56ee31245956c31913842972c0
    e247下的parent表示他的上一层镜像是d6e320849d0e54f848e987cd1b26605bfd2c85a188d078dc83de6e9c70652048这个镜像

    • mount-id文件内容对应的就是 /var/lib/docker/overlay2 下的目录名
      ,/var/lib/docker/overlay2/8a15ad05f77b0170c4d0f8bbbdf6dc442e6cc0be5b0ab59f8245f2d2d297eb7f目录下存放的就是对应镜像层的具体数据。

    linux下docker的目录结构8.jpg

    linux下docker的目录结构9.jpg

    • 红线所划两个目录区别:init后缀结尾的目录存放的也是和主机本地环境有关的配置,貌似被上面的/var/lib/docker/containers目录取代了,因为里面的文件貌似都是空的。
    • /var/lib/docker/image/overlay2/layerdb/sha256该目录下存放的是只读层镜像的元数据

    linux下docker的目录结构10.jpg

(3)/var/lib/docker/overlay2/

  • /var/lib/docker/overlay2/ 该目录下存放的镜像层的具体数据。
  • /var/lib/docker/overlay2/l/ 该目录下存放的是软链接

linux下docker的目录结构11.jpg

linux下docker的目录结构12.jpg

文章目录