Docker镜像文件存储结构
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卷的存储地
repositories-aufs
/var/lib/docker/repositories-aufs 存放的是本地所有仓库TagStore;可以对应到docker images 显示的信息;
root@n6-026-137:registry# cat /var/lib/docker/repositories-aufs |python -mjson.tool
{
"Repositories": {
"baseimage": {
"install_test_service": "7fc2548d2b3c6fa82d7a4da8a67e8619145d21b48009d53eeef2c00823d0f118",
"v0.1": "5a337e287e253c6cf573c0a64449e5bd648fdebd3787e0cc36f3b66c1c89ce83"
},
"baseimage.pre": {
"v1.0": "3e2059d8241e7a623972728cf6ec7093eb54a77f481c9cd0b0a86589ea1368d9"
},
......
Graph信息
/var/lib/docker/graph/ 下存储的是有镜像;每个镜像一个uuid值命名的目录,可以从repositories-aufs中找到具体是哪个镜像;
比如:baseimage:v1.0的5a337e287e253c6cf573c0a64449e5bd648fdebd3787e0cc36f3b66c1c89ce83 :
root@n6-026-137:registry# ls /var/lib/docker/graph/5a337e287e253c6cf573c0a64449e5bd648fdebd3787e0cc36f3b66c1c89ce83/
checksum json layersize
json -保存着关于这个镜像的元数据 layersize – 一个整数,表示layer的大小。
镜像元数据:
root@n6-026-137:registry# 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"
}
查看baseimage:v1.0的有多少层 : shell root@n6-026-137:docker# vi /var/lib/docker/aufs/layers/5a337e287e253c6cf573c0a64449e5bd648fdebd3787e0cc36f3b66c1c89ce83 1 8c7a4f4e1f099c9a59fcfa5bd4859f0b58e6b49c36e9a19ab0f453b4244c2cd2 2 83233435161ad3b1155260e1fc2592e0b0bf20840e8862216cbfa5a9cd6f538c 3 4a81de8c1c50f0c08a3b3810d34448a247ee5dc5a5407f79424a90f6c94c84d3 4 a7643b953718f9bee57ac8a4e85a4386e9268a89637fcb78c76a6ad9ceaa7649 5 46f55699874da611db2114a30d1b39b9e59bc97d383e316502e195115ec1a7dd 6 caa0a879a980170ff647ef7465f987bb035b896a2085e26d7e39887860bdcd98 7 fc08f28a2a36f3607aa2999a0c5702775f289b0db0be84dc8ec1dc4d8f0ec740 8 de1c21c78ec7ee7dde44e34071515c0ece8d2b7688e7a863216ba6a7845e6b8b 9 fb35fe2ca7e9b08ca663811a2509a3678100ebc897aa89560172d2f485d224ff 10 472023c9482e1183a61967c7ee2fdbc7970c80b8bfe3b3825f00a257851da081 11 b6c85061d955fae31c567009c1f82bf9b1e6d57634395aae68e9557914ce29d5 12 38c2a8f4286db6e4bd9df16819ac0e8bab51b704dad5f3381546edc509a13cbc 13 23f5441787467e3cb64f1a865094b77479803584b9ee929371528086525378ed 14 a7baf4d8d152cd332e873448471c6e0f8994774b19b20368e010f30e8f04ef42 15 d1cc0e6af8490e94cde088bec8b267615464eeb1af20bcbe577d055ff231e634 16 6b8a1ecb2364a8ea74873a6bac5104699c260a392ce403ca137b2ce5c5235114
Docker镜像文件存储结构的更多相关文章
- win10上修改docker的镜像文件存储位置
记住:修改的是docker从服务器上拉下来的镜像文件存储位置(本地),是不是镜像源地址(服务器) 首先 win10下的docker有可视化操作界面和命令行操作,下载了docker-ce.exe双击后就 ...
- PostgreSQL的存储系统二:REDOLOG文件存储结构二
REDOLOG文件里的用户数据和数据文件里的用户数据存储结构相同 几个月前同事给台湾一家公司培训<pg9 ad admin>时,有个学员提及WAL里记录的内容为Query时的SQL语句(比 ...
- 从零开始构建一个centos+jdk7+tomcat7的docker镜像文件
从零开始构建一个centos+jdk7+tomcat7的镜像文件 centos7系统下docker运行环境的搭建 准备centos基础镜像 docker pull centos 或者直接下载我准备好的 ...
- 如何将docker镜像文件上传至Docker Hub
一.Docker Hub中新建存储库 注册,登录Docker Hub之后,点击右上角Create Repository,创建存储库,如下图所示: 取个名字,我这里取名为lihui_demo.并且可以选 ...
- docker学习系列(三):docker镜像的分层结构
docker的镜像分层 docker里的镜像绝大部分都是在别的镜像的基础上去进行创建的,也就是使用镜像的分层结构. 实验 比如说使用dockerfile去创建一个最简单的hello镜像.创建好对应的d ...
- docker镜像的分层结构三
docker的镜像分层 docker里的镜像绝大部分都是在别的镜像的基础上去进行创建的,也就是使用镜像的分层结构. 实验 比如说使用dockerfile去创建一个最简单的hello镜像.创建好对应的d ...
- Docker镜像文件操作
1什么是Docker镜像 Docker镜像是由文件系统叠加而成(是一种文件的存储形式).最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统.Docker用户几乎永 ...
- 4、docker镜像:花卷结构、commit镜像
1.是什么 docker images 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. ...
- 【Linux】文件存储结构
大部分的Linux文件系统(如ext2.ext3)规定,一个文件由目录项.inode和数据块组成: 目录项:包括文件名和inode节点号. Inode:又称文件索引节点,包含文件的基础信息以及数据块 ...
随机推荐
- ms-sql关联表操作
1.创建数据库employee : create database employee;2.创建员工表EMP:use employee;create table EMP( id int,sex varc ...
- 安装eclipse的hadoop开发环境--2
在eclipse上做好一切,在网上很容易搜到 尝试链接hadoop集群失败,尝试单机的操作,发现# ssh localhost失败 解决ssh问题:成功解决 但是eclipse的DFS locatio ...
- Babel下的ES6兼容性与规范
前端开发 Babel下的ES6兼容性与规范 ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也用了一些折中性的方案来解决兼容性和开发体系问 ...
- echarts 用marlkline画线 同时配置中含有datazoom,怎么设置markline
由于项目需要设置边界值即用markline 画标线,通过echarts文档可以查看到(如下) 1.通过坐标点(xAxis和yAxis的设置) 通过网上搜索许多markline的配置都是通过下面来设置的 ...
- 夺命雷公狗-----React---21--小案例之心情留言板
这个功能如果是用传统型的jquery来写都要花费很多时间才可以完成的案例, 亲测jquery配合bootstrap来写和bootstrap配合react.js来写,不知不觉中有点震惊... jquer ...
- Linux 常用服务总结
使用linux有一段时间了,把自己在身边经常听到,使用linux经常遇到的linux常见服务总结出来,这样遇到问题会有更多的解决问题的办法,听别人摆这些专业术语时,才不会不知所云. 服务: 1.NFS ...
- mysql 每秒钟查询次数、插入次数、删除次数、更新次数的统计
-show global status where Variable_name in('com_select','com_insert','com_delete','com_update'); 查询出 ...
- hdu2068RPG的错排
Problem Description 今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁.RPG给他机会让他猜猜,第一次猜:R ...
- 在 ASP.NET MVC 中使用 HTTPS (SSL/TLS) -- 学习
在 ASP.NET MVC 中使用 HTTPS (SSL/TLS) IS 7如何实现http重定向https HTTPS 升级指南
- Oracle EBS R12 (12.1.3) Installation Linux(64 bit)
Oracle EBS R12 (12.1.3) Installation Linux(64 bit) Contents Objective. 3 1 Download & Unzip. 3 D ...