目录列表及大小示例-20220314

root@dewan01:/var/lib/docker# du -sh *

88K buildkit

72K containers

884K image

60K network

199M overlay2

16K plugins

8.0K README-my.md

4.0K runtimes

4.0K swarm

4.0K tmp

4.0K trust

12M volumes

目录说明

buildkit

containers

容器本身的目录,用来存储容器信息

命令"docker ps -a",看到的容器ID,可以在这个目录下找到

每一个以容器ID命令的目录下,有hostname,hosts,resolv.conf等文件

image

存储相关的元数据目录

# root@dewan01:/var/lib/docker/image# tree . -L 2
.
└── overlay2
├── distribution
├── imagedb ## 元数据,image由多个layer组成
├── layerdb ## 元数据
└── repositories.json 4 directories, 1 file # 根据image ID过滤
# root@dewan01:/var/lib/docker/image/overlay2/imagedb# cat $(find . | grep 7ae) | jq . "os": "linux",
"rootfs": {
"type": "layers",
"diff_ids": [
"sha256:d31505fd5050f6b96ca3268d1db58fc91ae561ddf14eaabc41d63ea2ef8c1c6d",
"sha256:3c7bbbb1555539bc7eba21364587faa4742400f7b3f284fb565110bc29a6b3aa",
"sha256:f6c16e205acedafad87e9aa0185d0f107512ce8ec90b33548c895ad8f56ebb5c",
"sha256:b8eb5ee2cdc62a5a417eb838d408b6a276b21b4e53006c885a567155fc9cd6d3",
"sha256:c9f26c8e7aa05ad2d452eb6ff296d92e8f5885f6a5bc79af1ad9a70f0dfe9593",
"sha256:51683fb1749e7f00845ddc3a2aa54131c7c3923fae3acee38a2035d2ca296898",
"sha256:a543bc5c4cabe5cb050ed141c0681bc65d0d65e52f68572738b6fab67b3eb2ee",
"sha256:a2f383f3d0ca0c56af54e56ffc860b7ff41079f76e2ec5e04595c606abdf8d34",
"sha256:e246c8249da0a808b78029f7f6c799ca7d6b2e419d87e5455d75aeb790660c9b",
"sha256:1e95a8217ac9eb4293228a7c4e380881d2b27620fc60469951fd3a15929cf7f9",
"sha256:6612c9404a287d14725567594c09875fbd1d657f5b06cca75fcdbd49940745d8",
"sha256:80f3667c795571530f1ca849a0c4e242f0cb1f00f7a2cbf3bc6d1f4ac6d14d22"
] # diff_ids中的12个元素,正是组成prometheus镜像的12个layerID
# 从上往下,就是从底层到顶层。
# 去 /var/lib/docker/image/overlay2/layerdb/sha256 查看,找到了底层ID # ll d31505fd5050f6b96ca3268d1db58fc91ae561ddf14eaabc41d63ea2ef8c1c6d/
total 32
drwx------ 2 root root 4096 Mar 13 16:01 ./
drwxr-xr-x 17 root root 4096 Mar 14 09:49 ../
-rw-r--r-- 1 root root 64 Mar 13 16:01 cache-id
-rw-r--r-- 1 root root 71 Mar 13 16:01 diff
-rw-r--r-- 1 root root 7 Mar 13 16:01 size
-rw-r--r-- 1 root root 12128 Mar 13 16:01 tar-split.json.gz # find /var/lib/docker/ | grep $(cat cache-id) | wc -l
427
# cache-id 指向的就是 overlay2 中的一个目录
# /var/lib/docker/overlay2/cf807ccea9264e13b12b502f9cc03c9b17cad6c8aabc40ff685c10fed15c5535 # 第2层id需要经过计算得到:
# echo -n "sha256:d31505fd5050f6b96ca3268d1db58fc91ae561ddf14eaabc41d63ea2ef8c1c6d sha256:3c7bbbb1555539bc7eba21364587faa4742400f7b3f284fb565110bc29a6b3aa" | sha256sum -
69d16612464e540e855466474b2cadffb861569e158ffc11bd514d503af15fbd - # find /var/lib/docker/ | grep $(cat cache-id) | wc -l
1911 # 以此类推,就能找到所有的layerID组合。
# 当这些layer以联合挂载的方式挂载,就能得到完整的容器rootfs # 比较 imagedb 中记录的 sha256 ids 个数,与 layerdb ids 的个数。
# /var/lib/docker/image/overlay2/imagedb/content/sha256# ls | xargs cat $1 | jq . | grep sha256 | grep -v Image | sort | uniq | wc -l
16 # /var/lib/docker/image/overlay2/layerdb/sha256# ll | wc -l
18

network

"SandboxKey": "/var/run/docker/netns/517912ab9a5f"

overlay2

镜像和容器实际存放位置

测试中,进入到容器目录下,使用tree . -L 2,可以看到一个rootfs的目录结构。

plugins

runtimes,swarm,tmp,trust

空目录

volumes

卷目录

"Volumes": {
"/prometheus": {}
},
"WorkingDir": "/prometheus", 比较发现,./volumes/bd2d../_data/目录下的东西和容器中/prometheus 目录下的一致。

测试&收获

# docker inspect prometheus | grep "var/lib"

        "ResolvConfPath": "/var/lib/docker/containers/163ce22c4e12f34386453f1b8954fcf77f5a6795faaec854f245709790121bb3/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/163ce22c4e12f34386453f1b8954fcf77f5a6795faaec854f245709790121bb3/hostname",
"HostsPath": "/var/lib/docker/containers/163ce22c4e12f34386453f1b8954fcf77f5a6795faaec854f245709790121bb3/hosts",
"LogPath": "/var/lib/docker/containers/163ce22c4e12f34386453f1b8954fcf77f5a6795faaec854f245709790121bb3/163ce22c4e12f34386453f1b8954fcf77f5a6795faaec854f245709790121bb3-json.log",
"LowerDir": "/var/lib/docker/overlay2/b444136a9a7664a93d305583cc999147c6702e193a7b898588f7f4bc2a93a947-init/diff:/var/lib/docker/overlay2/ccd34df8e276417a6a5ba68b6b70f5b4d5d8fcd5bfb979d0b2d01506513bb79d/diff:/var/lib/docker/overlay2/34d1778940a3a78ebbb033e0221acc98b9c55e303b7f632569cd5db31febf308/diff:/var/lib/docker/overlay2/b17082d07781bc9d06f2ec14e6e5e60a947d8988b24dc50943a6c66c949788ca/diff:/var/lib/docker/overlay2/9d846358dc8cf26de3371228972d924d2cb1c7e794fe2f64e544f9167b8432bb/diff:/var/lib/docker/overlay2/deb03364f7ea3b9530dbcb245c97872884c17925986e2306f6ba31539e6bebba/diff:/var/lib/docker/overlay2/2ebfb7278b829cf0a07bcec3f6c8beb214fbd6bf140daa823415053401e1cb5d/diff:/var/lib/docker/overlay2/3040efb82ca0c4c7c5741f00ece0c37717ebeaca674996a804a0a055061e162b/diff:/var/lib/docker/overlay2/f2b0436e7337aa4123e7673961df8cd4d0f0ef4a6963b239c7558dd172cfc457/diff:/var/lib/docker/overlay2/6d8ba9c1ff481f68d7eccdac1a2341c4edf5a227d032b26d8ea8bf7cd0a29553/diff:/var/lib/docker/overlay2/affc2aa7cc3e4287aba26f69ada465f7e9f641473e8fe6805adfbe14bcfb819b/diff:/var/lib/docker/overlay2/c6fbf8097dfce2ccb31fb431f519f022b8bded2b02b4f9746f82315132fa9302/diff:/var/lib/docker/overlay2/452f128cdf975af53e61e69f5cd65e4ff27e113504d602f51508a02eca873c1a/diff:/var/lib/docker/overlay2/cf807ccea9264e13b12b502f9cc03c9b17cad6c8aabc40ff685c10fed15c5535/diff",
"MergedDir": "/var/lib/docker/overlay2/b444136a9a7664a93d305583cc999147c6702e193a7b898588f7f4bc2a93a947/merged",
"UpperDir": "/var/lib/docker/overlay2/b444136a9a7664a93d305583cc999147c6702e193a7b898588f7f4bc2a93a947/diff",
"WorkDir": "/var/lib/docker/overlay2/b444136a9a7664a93d305583cc999147c6702e193a7b898588f7f4bc2a93a947/work"
"Source": "/var/lib/docker/volumes/bd2d1872bf0376a700e03e946aed117f46c0f8a4feff4c049eef937e1bbcd40c/_data", # root@dewan01:/var/lib/docker# find . | grep testfile
./overlay2/b444136a9a7664a93d305583cc999147c6702e193a7b898588f7f4bc2a93a947/merged/home/testfile
./overlay2/b444136a9a7664a93d305583cc999147c6702e193a7b898588f7f4bc2a93a947/diff/home/testfile # root@dewan01:/var/lib/docker# find . | grep all_file
./volumes/bd2d1872bf0376a700e03e946aed117f46c0f8a4feff4c049eef937e1bbcd40c/_data/all_files_15-10-17 # docker pull busybox
# 增加了400多个文件
# docker images | grep busy
busybox latest a9d583973f65 12 months ago 1.23MB # diff all_file.0314_1 all_file.0314_2 35a37
> ./overlay2/l/TTDQNDG6742ZRSIXROI6MLKSOS
530a533,956
> ./overlay2/b5b40fd4683a5f9c3454a78d57f8243b48021bc865963010c80923ed0b3348ec
4886a5313
> ./image/overlay2/distribution/diffid-by-digest/sha256/8b3d7e226fab303defb72e117d7668955a0999b03177a98d2762f8d62df2b559
4931a5359
> ./image/overlay2/distribution/v2metadata-by-diffid/sha256/2983725f2649f8847244cbb73ff9cb0b041bd319144816dfdee904adfd18bd1f
4964a5393
> ./image/overlay2/imagedb/content/sha256/a9d583973f65a19b3bbd7a4312b4e2c27712c44c0ed8b94e9a38cc73e7565b75
4999a5429,5433
> ./image/overlay2/layerdb/sha256/2983725f2649f8847244cbb73ff9cb0b041bd319144816dfdee904adfd18bd1f

docker 镜像与容器存储目录结构的更多相关文章

  1. docker镜像与容器存储结构分析

    注意:转载请注明出处:http://www.programfish.com/blog/?p=9 Docker是一个开源的应用容器引擎,主要利用linux内核namespace实现沙盒隔离,用cgrou ...

  2. CentOS7更改Docker默认镜像和容器存储位置

    图片出处:https://bobcares.com/wp-content/uploads/docker-change-directory.jpg 一.Why? 通常,当你开始使用docker时,我们并 ...

  3. docker镜像与容器

    目录 docker镜像与容器 概述 分层存储 镜像与容器 删除镜像与容器 将容器中的改动提交到镜像 慎用 docker commit--构建镜像推荐使用dockerfile docker镜像与容器 概 ...

  4. Docker容器化【Docker镜像与容器相关命令】

    # Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...

  5. Docker镜像与容器的常用操作

    Docker镜像加速配置:Docker镜像常用操作:Dcoker容器常用操作. 镜像加速器 国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器.国内很多云服务商都提供了国内加 ...

  6. centos7下更改docker镜像和容器的默认路径

    笔者近期在服务器上搭建docker环境,可由于笔者是普通用户,在安装的时候就跳了很多坑,现在记录一下. 一.docker权限问题 据官方解释,搭建docker环境必须使用root权限,或者sudo装, ...

  7. docker 入门(docker 镜像 、容器、仓库)

    一.关于docker 镜像 .容器.仓库之间的关系 镜像(Image): 类似于虚拟机 的镜像 容器(Container): 类似于操作系统(或者说是独立的软件), 由镜像可以创建大量的容器. 仓库( ...

  8. Docker镜像和容器

    本节内容: 安装Docker 卸载docker 镜像基本操作 容器基本操作 一.安装Docker Docker 对 Linux 内核版本的最低要求是3.10,如果内核版本低于 3.10 会缺少一些运行 ...

  9. docker系列四之docker镜像与容器的常用命令

    docker镜像与容器的常用命令 一.概述   docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...

  10. docker镜像和容器的导出导入

    本文介绍docker镜像和容器的导入导出,用于迁移.备份.升级等场景.主要用到export.import.save.load四个方法. 原文地址:代码汇个人博客 http://www.codehui. ...

随机推荐

  1. docker启动mysql报错Can't read dir of '/etc/mysql/conf.d/'

    执行命令: docker run -p 3306:3306 --privileged=true -v /mysql/data:/var/lib/mysql -v /mysql/log:/var/log ...

  2. 刺激!ChatGPT给我虚构了一本书?

    ChatGPT很强大,可以帮我们处理很多问题,但这些问题的答案的正确性您是否有考证过呢? 昨晚,DD就收到了一个有趣的反馈: 提问:有什么关于数据权限设计的资料推荐吗? ChatGPT居然介绍了一本根 ...

  3. SQL Server数据库判断最近一次的备份执行结果

    1 麻烦的地方 在SQL Server的官方文档里面可以看到备份和还原的表,但是这些表里面只能找到备份成功的相关信息,无法找到备份失败的记录,比如msdb.dbo.backupset.对于一些监控系统 ...

  4. Node + Express 后台开发 —— 上传、下载和发布

    上传.下载和发布 前面我们已经完成了数据库的增删改查,在弄一个上传图片.下载 csv,一个最简单的后台开发就已完成,最后部署即可. 上传图片 需求 需求:做一个个人简介的表单提交,有昵称.简介和头像. ...

  5. RMQ问题ST表

    稀疏表(Sparse Table表) 解决静态RMQ,区间最值查询问题的数据结构,树状数组(BIT)解决动态前缀和问题的数据结构: 例:https://www.luogu.org/problemnew ...

  6. 文心一言 VS chatgpt (5)-- 算法导论2.2 3~4题

    三.再次考虑线性查找问题(参见练习 2.1-3).假定要查找的元素等可能地为数组中的任意元素,平均需要检查输入序列的多少元素?最坏情况又如何呢?用0记号给出线性查找的平均情况和最坏情况运行时间.证明你 ...

  7. nodejs 入门基本操作

    操作fs模块 const path = require("path"); const fs = require("fs"); /* 相对路径是命令窗口执行的目录 ...

  8. Maven安装、阿里云镜像配置、Idea中创建Maven项目、Tomcat的部署

    我为什么要学这个技术? 为了更快创建web开发项目和jar包 在javaweb开发中,需要使用大量的jar包,我们手动去导入: 如何能够让一个东西自动帮我导入和配置这个jar包 因此,Maven诞生了 ...

  9. Pose泰裤辣! 一键提取姿态生成新图像

    摘要:从图像提取人体姿态,用姿态信息控制生成具有相同姿态的新图像. 本文分享自华为云社区<Pose泰裤辣! 一键提取姿态生成新图像>,作者: Emma_Liu . 人体姿态骨架生成图像 C ...

  10. mac -bash: ls: No such file or directory

    再mac 输入ls 竟然提示我 如图其他到命令都不能用了??? 网上找了大半天.看见这种类似的很多,但是最后都不是我要的答案,最后没辙,注销用户,重新登陆,问题没有了,也不知道是不是mac的bug:有 ...