docker registry 存储格式

作者: wencst 分类: docker,云计算 发布时间: 2019-07-31 12:07 阅读: 90 次

一. 场景描述

前几天,registry服务器磁盘已经满了,想办法清除部分无用的数据。其中有一种方法,就是手工清除,上一篇文章没有写怎么手动清除。这里描述一下registry的存储格式。

二. 存储格式

1.整体存储

首先registry的存储路径为:/var/lib/registry/docker/registry/v2

里面分了两个目录:

repositories :用于指定镜像索引

blobs             :用于实际存储镜像文件

2.repository

进入repository,里面直接路径是镜像文件夹

例如:

127.0.0.1:5000/kalilinux/kali-linux-docker

这个镜像,在repository下存储的路径就是:

/var/lib/registry/docker/registry/v2/repositories/kalilinux/kali-linux-docker

更具体的存储:

├── _layers
│   └── sha256
│       ├── 2d2ae6a9fcee56e3bba2e78e424b902dbf47454e1ae6f7d5edff2a34f5e2bed1
│       │   └── link
│       ├── 2ff00b60bbf86eaddfe33510c1d3bbc7a004b4d9f32b53fa511d136f91a03b50
│       │   └── link
│       ├── 3190b4c353c3301a186efaded81c4fd9612bef0c8e75075a352d72066d578eca
│       │   └── link
│       ├── 43c2db3ca1e0105af54c188061c477b71e7da0c0171217a12b86b8111cc9ed4e
│       │   └── link
│       ├── 4bdcae87f41626ab5c1dd172317eabfb07753bb749d980faa2bc446c9ec2f2d5
│       │   └── link
│       ├── 52c6ea74ac5d7a0182d8fa81c22999f63c4b0d9593884c0d7a93791f9e2708cb
│       │   └── link
│       ├── 54a5854cda2a5a6d9c47b5dfe8ce868dc9c6cca4c6c87263b02cc8b61bf9b924
│       │   └── link
│       ├── 59a0b3c10ffb05289497583ef8ca81bb7229c369bab5ec4044c945b5eb0fabf3
│       │   └── link
│       ├── 5d0e53935e132365e66719269074121f11734ad64bd336a17c87e9dc85948b9d
│       │   └── link
│       ├── 6912b8276def1e4b2ed789badc630cbc20c94f27ddeeb15994ff2a6a3d72013c
│       │   └── link
│       ├── 820130cb6919d780f3b56b31a38b7609b2fd4d00981fa091015a5fb69543f36f
│       │   └── link
│       ├── 86f3fc4b485e0887af85dad963874a906e6d216d2ca59e54d92e22a20ee9cad6
│       │   └── link
│       ├── 87887217c2897c1524e2ddda44a334ab1cf7d425f53eb3e16f4aa3175ac11f0a
│       │   └── link
│       ├── 88dbaed13d27cc398a9b468c84b687b6e4dc36d403c8cb21dc424b41fd150624
│       │   └── link
│       ├── 89331c3aa1d94c2e3116fcee4c5ff7f0d9d3e29e69774f71597be3c2009a5e22
│       │   └── link
│       ├── 9d645621bf45b5cedbda042df6604cf2b8abc6a44cf6c28704f806ed98b6777d
│       │   └── link
│       ├── a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
│       │   └── link
│       └── c6f960c82b113bfe9e675c62739da9514847cd8480f6ed5d80ed4de34fc7d6ce
│           └── link
├── _manifests
│   ├── revisions
│   │   └── sha256
│   │       └── 9cc62c3e49d75e14bc134154686b6465aaf48b78a4044618ca58802ac7363130
│   │           ├── link
│   │           └── signatures
│   │               └── sha256
│   │                   └── 4fe55c9726bd8b00a592ae60988843ebf21a07f50e3ad458c03489ceddc97a08
│   │                       └── link
│   └── tags
│       └── latest
│           ├── current
│           │   └── link
│           └── index
│               └── sha256
│                   └── 9cc62c3e49d75e14bc134154686b6465aaf48b78a4044618ca58802ac7363130
│                       └── link
└── _uploads

34 directories, 22 files

可以看到最基本的内容为link文件,而link文件本身存储的也是一个64位的16进制字符串。

3.blob

在repository中,我们存储的只是索引文件,如果我们想释放磁盘存储,还是看一下blob内的内容。

可以看到这里的存储是16进制数字编码,这里展示的是repository  link文件中存储的64位16进制编码中的前2位。主要用于索引,方便查找。

例如我们进入(9cc62c3e49d75e14bc134154686b6465aaf48b78a4044618ca58802ac7363130)文件夹,里面只有一个data文件,这个data文件就是实际每一层存储的内容了。

 

 

如果文章对您有用,扫一下支付宝的红包,不胜感激!

欢迎加入QQ群进行技术交流:656897351(各种技术、招聘、兼职、培训欢迎加入)



Leave a Reply