Docker镜像文件的存储结构

1. 基本信息

docker相关镜像文件存放在:/var/lib/docker目录下。镜像的存储结构主要分两部分,一是镜像ID之间的关联,二是镜像ID与镜像名称之间的关联;前者的结构体叫Graph,后者叫TagStore。

  • /var/lib/docker/repositories-aufs,TagStore的存储地方,里面有image id与reponame ,tag之间的映射关系. aufs是driver名。

  • /var/lib/graph/,下面没有layer目录,只有每个镜像的json描述文件和layersize大小。

  • /var/lib/docker/aufs/diff/,每层layer与其父layer之间的文件差异,有的为空,有的有一些文件(镜像实际存储的地方)。

  • /var/lib/docker/aufs/layers/,每层layer一个文件,记录其父layer一直到根layer之间的ID,每个ID一行。大部分文件的最后一行都一样,表示继承自同一个layer。

  • /var/lib/docker/aufs/mnt/,有容器运行时里面有数据(容器数据实际存储的地方,包含整个文件系统数据),退出时里面为空。

  • /var/lib/docker/volumes,volumes卷的存储地。

2. repositories-aufs信息

/var/lib/docker/repositories-aufs,存放的是本地所有仓库的TagStore,可以对应到# docker images显示的信息:

# cat /var/lib/docker/repositories-aufs |python -mjson.tool  

{
    "Repositories": {
        "baseimage": {
            "install_test_service": "7fc2548d2b3c6fa82d7a4da8a67e8619145d21b48009d53eeef2c00823d0f118",
            "v0.1": "5a337e287e253c6cf573c0a64449e5bd648fdebd3787e0cc36f3b66c1c89ce83"
        },
        "baseimage.pre": {
            "v1.0": "3e2059d8241e7a623972728cf6ec7093eb54a77f481c9cd0b0a86589ea1368d9"
        },

2. Graph信息

/var/lib/docker/graph/下存储的是镜像,以及每个镜像对应一个uuid值命名的目录,我们可以从repositories-aufs中找到具体是哪个镜像,比如baseimage : v1.0的5a337e287e253c6cf573c0a64449e5bd648fdebd3787e0cc36f3b66c1c89ce83 :

# ls /var/lib/docker/graph/5a337e287e253c6cf573c0a64449e5bd648fdebd3787e0cc36f3b66c1c89ce83/

checksum  json  layersize

checksum是文件总和检验码,json文件夹保存着关于此镜像的元数据,layersize是一个整数,表示layer的大小。

2.1 查看镜像的元数据:
# cat /var/lib/docker/graph/5a337e287e253c6cf573c0a64449e5bd648fdebd3787e0cc36f3b66c1c89ce83/json|python -mjson.tool

{
    "Size": 0,
    "architecture": "amd64",
    "author": "Sebastian Krohn <seb@gaia.sunn.de>",
    "config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "/lib/systemd/systemd"
        ],
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "DEBIAN_FRONTEND=noninteractive",
            "container=docker"
        ],
        "ExposedPorts": null,
        "Hostname": "bcad5a346f31",
        "Image": "8c7a4f4e1f099c9a59fcfa5bd4859f0b58e6b49c36e9a19ab0f453b4244c2cd2",
        "Labels": {},
        "MacAddress": "",
        "NetworkDisabled": false,
        "OnBuild": [],
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "VolumeDriver": "",
        "Volumes": {
            "/run": {},
            "/run/lock": {},
            "/sys/fs/cgroup": {},
            "/tmp": {}
        },
        "WorkingDir": ""
    },
    "container": "9f909663a7c412464a9645800887e3104e04c8e070fa7b4741758ded5de6903f",
    "container_config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": [
            "/bin/sh",
            "-c",
            "#(nop) CMD [\"/lib/systemd/systemd\"]"
        ],
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "DEBIAN_FRONTEND=noninteractive",
            "container=docker"
        ],
        "ExposedPorts": null,
        "Hostname": "bcad5a346f31",
        "Image": "8c7a4f4e1f099c9a59fcfa5bd4859f0b58e6b49c36e9a19ab0f453b4244c2cd2",
        "Labels": {},
        "MacAddress": "",
        "NetworkDisabled": false,
        "OnBuild": [],
        "OpenStdin": false,
        "PortSpecs": null,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "VolumeDriver": "",
        "Volumes": {
            "/run": {},
            "/run/lock": {},
            "/sys/fs/cgroup": {},
            "/tmp": {}
        },
        "WorkingDir": ""
    },
    "created": "2016-04-21T10:42:07.532547156Z",
    "docker_version": "1.7.0",
    "id": "5a337e287e253c6cf573c0a64449e5bd648fdebd3787e0cc36f3b66c1c89ce83",
    "os": "linux",
    "parent": "8c7a4f4e1f099c9a59fcfa5bd4859f0b58e6b49c36e9a19ab0f453b4244c2cd2"
}
2.2 查看baseimage : v1.0的有多少层 :
# vi /var/lib/docker/aufs/layers/5a337e287e253c6cf573c0a64449e5bd648fdebd3787e0cc36f3b66c1c89ce83

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值