• docker存储管理


    docker镜像元数据管理

    repository元数据

    [root@localhost ~]# cd /var/lib/docker/image/overlay2/
    [root@localhost overlay2]# cat repositories.json |python -mjson.tool
    {
        "Repositories": {
            "busybox": {
                "busybox:latest": "sha256:6d5fcfe5ff170471fcc3c8b47631d6d71202a1fd44cf3c147e50c8de21cf0648",
                "busybox@sha256:6915be4043561d64e0ab0f8f098dc2ac48e077fe23f488ac24b665166898115a": "sha256:6d5fcfe5ff170471fcc3c8b47631d6d71202a1fd44cf3c147e50c8de21cf0648"
            },
            "nginx": {
                "nginx:latest": "sha256:231d40e811cd970168fb0c4770f2161aa30b9ba6fe8e68527504df69643aa145",
                "nginx@sha256:50cf965a6e08ec5784009d0fccb380fc479826b6e0e65684d9879170a9df8566": "sha256:231d40e811cd970168fb0c4770f2161aa30b9ba6fe8e68527504df69643aa145"
            }
        }
    }

    文件中存储了所有repository的名字(如busybox),每个repository下所有版本镜像的名字和tag(如busybox:laster)以及对应的镜像IP,而referenceStore的作用便是解析不同格式的repository名字,并管理repository与镜像ID的映射关系。

    image元数据

    包括了镜像架构(如amd64),操作系统(如linux),镜像默认配置,构建该镜像的容器ID和配置,创建地间,创建该镜像的Docker版本,构建镜像的历史信息以及rootfs组成。

    /var/lib/docker/image/overlay2/imagedb/content/sha256
    [root@localhost sha256]# ls -la
    总用量 12
    drwx------. 2 root root  150 12月 27 21:56 .
    drwx------. 3 root root   20 12月 27 20:57 ..
    -rw-------. 1 root root 6670 12月 27 21:50 231d40e811cd970168fb0c4770f2161aa30b9ba6fe8e68527504df69643aa145
    -rw-------. 1 root root 1497 12月 27 21:56 6d5fcfe5ff170471fcc3c8b47631d6d71202a1fd44cf3c147e50c8de21cf0648

    imageStore则管理镜像ID与镜像元数据之间原映射关系以及元数据的持久化操作,持久化文件位于/var/lib/docker/image/overlay2/imagedb/content/sha256

    docker存储驱动

    docker存储驱动管理方式,aufs、overlay、devicemapper。

    镜像文件在本存储在

    [root@localhost sha256]# cd /var/lib/docker
    [root@localhost docker]# ls -l
    总用量 8
    drwx------.  2 root root   24 12月 27 20:57 builder
    drwx--x--x.  4 root root   92 12月 27 20:57 buildkit
    drwx------.  6 root root 4096 12月 28 21:21 containers
    drwx------.  3 root root   22 12月 27 20:57 image
    drwxr-x---.  3 root root   19 12月 27 20:57 network
    drwx------. 15 root root 4096 12月 28 21:21 overlay2
    drwx------.  4 root root   32 12月 27 20:57 plugins
    drwx------.  2 root root    6 12月 28 20:16 runtimes
    drwx------.  2 root root    6 12月 27 20:57 swarm
    drwx------.  2 root root    6 12月 28 20:16 tmp
    drwx------.  2 root root    6 12月 27 20:57 trust
    drwx------.  2 root root   25 12月 27 20:57 volumes

    overlayFS是一种新型联合文件系统(union filesystem),它允许用户将一个文件系统与另一个文件系统重叠(overly),在上层的文件系统中记录更改,而下层的文件系统保持不变。使用4类目录来完成工作,被联合挂载的两个目录lower和upper,作为统一视图联合挂载点merged目录,还有作为辅助功能的work目录。作为upper和lower被联合挂载的统一视图,当同一路径的两个文件分别存在两个目录中时,位于上层目录upper中的文件会屏蔽位于下层lower中的文件,如果是同路径的文件夹,那么下层目录中的文件和文件夹会被合并到上层,在对可读写的OverlayFS挂载目录中的文件进行读写删等操作的过程与挂载两层的aufs(下层是只读层,上导是可读写层)是类似的,需要注意的一点是,第一次以write方式打开一个位于下层目录的文件时,OverlayFS会执行一个copy_up将文件从下层复制到上层,与aufs不同的是,  这个copy_up的实现不符合POSIX标准,Overlay在使用上非常简单,首先使用命令lsmod | grep overlay确认内核中是否存在overlay模块,如果不存在,需要升级到3.18以上的内核版本,并使用modprobe overlay加载,然后再创建必要文件夹并执行 mount命令即可完成挂载,最后可以通过 查看mount命令的输出来确认挂载结果。

    [root@localhost ~]# cd /tmp
    [root@localhost tmp]# mkdir lower upper work merged
    [root@localhost tmp]# mount -t overlay loverlay -o lowerdir=./lower,upperdir=./upper,workdir=./work ./merged
    [root@localhost tmp]# mount |grep overlay
    overlay on /var/lib/docker/overlay2/3657763c788926c8e1030a2b0656ff0a4a5188bd2e7737e35194261f832e6c12/merged type overlay (rw,relatime,seclabel,lowerdir=/var/lib/docker/overlay2/l/TBB3CXSBIUVLOWKXW2V4KW7XYR:/var/lib/docker/overlay2/l/IG5OOBIOF3QYZF35UT6MQVAURN,upperdir=/var/lib/docker/overlay2/3657763c788926c8e1030a2b0656ff0a4a5188bd2e7737e35194261f832e6c12/diff,workdir=/var/lib/docker/overlay2/3657763c788926c8e1030a2b0656ff0a4a5188bd2e7737e35194261f832e6c12/work)
    overlay on /var/lib/docker/overlay2/f72a27e827d1513c9ad338425d1f367c72d127c0a0db0d0490018d9d7454be4c/merged type overlay (rw,relatime,seclabel,lowerdir=/var/lib/docker/overlay2/l/3B4WJ4MMFNWJQQRUUPYSO6ULOG:/var/lib/docker/overlay2/l/IG5OOBIOF3QYZF35UT6MQVAURN,upperdir=/var/lib/docker/overlay2/f72a27e827d1513c9ad338425d1f367c72d127c0a0db0d0490018d9d7454be4c/diff,workdir=/var/lib/docker/overlay2/f72a27e827d1513c9ad338425d1f367c72d127c0a0db0d0490018d9d7454be4c/work)
    loverlay on /tmp/merged type overlay (rw,relatime,seclabel,lowerdir=./lower,upperdir=./upper,workdir=./work)
    [root@localhost tmp]# cd /var/lib/docker/overlay2/
    [root@localhost overlay2]# tree -L 2
    .
    ├── 1aa124125fcddea1292b0cf2522ed29a4ecc495ac021eb6de0a07bb7e051145e
    │   ├── committed
    │   ├── diff
    │   └── link
    ├── 3657763c788926c8e1030a2b0656ff0a4a5188bd2e7737e35194261f832e6c12
    │   ├── diff
    │   ├── link
    │   ├── lower
    │   ├── merged
    │   └── work
    ├── 3657763c788926c8e1030a2b0656ff0a4a5188bd2e7737e35194261f832e6c12-init
    │   ├── committed
    │   ├── diff
    │   ├── link
    │   ├── lower
    │   └── work
    ├── 56398f646ddcc3645ed508fa22cd5a9ddca71f8c457a6a8cf45e149dd0096afa
    │   ├── diff
    │   ├── link
    │   ├── lower
    │   └── work
    ├── 65a3b2831578ff4e816dcb6fcdd0d25c5e24937309583da2de568d5f39b82cb4
    │   ├── diff
    │   ├── link
    │   ├── lower
    │   └── work
    ├── 65a3b2831578ff4e816dcb6fcdd0d25c5e24937309583da2de568d5f39b82cb4-init
    │   ├── committed
    │   ├── diff
    │   ├── link
    │   ├── lower
    │   └── work
    ├── a052e23891f50dd66b2e6e23626dc34c698a683bc58e00f9b474855fb1240a96
    │   ├── committed
    │   ├── diff
    │   └── link
    ├── b49c81d847c8451450ac967ce9fdc994969063c1149e18d56f6eed6cd38e69eb
    │   ├── committed
    │   ├── diff
    │   ├── link
    │   ├── lower
    │   └── work
    ├── backingFsBlockDev
    ├── d0f915e259e16628e19fabc6a9ad1ccbb4ce238f409a63dbbb1e8e818d5d2a06
    │   ├── diff
    │   ├── link
    │   ├── lower
    │   └── work
    ├── d0f915e259e16628e19fabc6a9ad1ccbb4ce238f409a63dbbb1e8e818d5d2a06-init
    │   ├── committed
    │   ├── diff
    │   ├── link
    │   ├── lower
    │   └── work
    ├── f72a27e827d1513c9ad338425d1f367c72d127c0a0db0d0490018d9d7454be4c
    │   ├── diff
    │   ├── link
    │   ├── lower
    │   ├── merged
    │   └── work
    ├── f72a27e827d1513c9ad338425d1f367c72d127c0a0db0d0490018d9d7454be4c-init
    │   ├── committed
    │   ├── diff
    │   ├── link
    │   ├── lower
    │   └── work
    └── l
        ├── 2W7INW232M6YZI3Y7K4XLG46SJ -> ../d0f915e259e16628e19fabc6a9ad1ccbb4ce238f409a63dbbb1e8e818d5d2a06-init/diff
        ├── 3B4WJ4MMFNWJQQRUUPYSO6ULOG -> ../f72a27e827d1513c9ad338425d1f367c72d127c0a0db0d0490018d9d7454be4c-init/diff
        ├── IG5OOBIOF3QYZF35UT6MQVAURN -> ../1aa124125fcddea1292b0cf2522ed29a4ecc495ac021eb6de0a07bb7e051145e/diff
        ├── KOXGSKWMI4X5U3W5NZYPVE6WGS -> ../b49c81d847c8451450ac967ce9fdc994969063c1149e18d56f6eed6cd38e69eb/diff
        ├── M4V2ZQQCU6AJQLE7YIFJXY2HEW -> ../3657763c788926c8e1030a2b0656ff0a4a5188bd2e7737e35194261f832e6c12/diff
        ├── MJ6JR7ND5KKIN66MCRPFTRBFGU -> ../f72a27e827d1513c9ad338425d1f367c72d127c0a0db0d0490018d9d7454be4c/diff
        ├── TBB3CXSBIUVLOWKXW2V4KW7XYR -> ../3657763c788926c8e1030a2b0656ff0a4a5188bd2e7737e35194261f832e6c12-init/diff
        ├── WDB5UXY4AH7J4TVKA6LHIC2PPI -> ../56398f646ddcc3645ed508fa22cd5a9ddca71f8c457a6a8cf45e149dd0096afa/diff
        ├── XOWC5WF5H3EIR3XFY7O3BLUWBB -> ../65a3b2831578ff4e816dcb6fcdd0d25c5e24937309583da2de568d5f39b82cb4-init/diff
        ├── XQYX4GUKV3VWP2YGI2ZT5GLZHZ -> ../d0f915e259e16628e19fabc6a9ad1ccbb4ce238f409a63dbbb1e8e818d5d2a06/diff
        ├── YDVTYBNZH6KTINZRTLR3JIZLLI -> ../65a3b2831578ff4e816dcb6fcdd0d25c5e24937309583da2de568d5f39b82cb4/diff
        └── ZH73XHG5CIUEDMUV4R7L7KHFKE -> ../a052e23891f50dd66b2e6e23626dc34c698a683bc58e00f9b474855fb1240a96/diff
    
    49 directories, 30 files
  • 相关阅读:
    053403
    053402
    053401
    053400
    053399
    053398
    053397
    053396
    053395
    第k小数
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12113300.html
Copyright © 2020-2023  润新知