Docker 仓库的一些基本概念

Docker 仓库,细说起来和 git 仓库是有着异曲同工之处的,都是可以 commit/pull/push,并且每次提交都是分层的结构。下面就说说 docker 仓库的一些基本概念,以及和 git 仓库都有哪些相同之处。

registry

Registry 是用来保存 docker 镜像及镜像层次结构和元数据的一个综合的管理和维护镜像的组件。和 Github 一个概念,主要用于保存和管理 docker 镜像。用户也可以创建私有的 registry。

index

Index 可以想像成 registry 的索引,主要用于管理用户的账号、访问权限、镜像及镜像标签等等相关检索库的。docker search 命令所检索的就是 index 索引。

repository

Repository 是由具有某个功能的镜像的所有相关版本构成的集合,相当于 Github 中的一个项目,是 registry 中的一个功能。

1
2
3
4
5
6
[hzz@magedu ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos 7 2d194b392dd1 39 hours ago 195.4 MB
docker.io/nginx latest e548f1a579cf 2 weeks ago 108.6 MB
docker.io/debian stretch-slim 87afbf13bea7 2 weeks ago 55.27 MB
[hzz@magedu ~]$

从以上信息可以看到,docker.io/centos 只是作为一个项目名存在,后面的 TAG 才是具体镜像。是不是跟 Github 中的 tag 有点像?

graph

以上都是远端仓库组件,而 graph 是本地客户端组件。

从 registry 中下载的 Docker 镜像需要保存在本地,此功能即由 graph 完成。

早期的本地镜像存在于 /var/lib/docker/graph 中,但最近找不到这个目录了,仔细翻看了一下,发现镜像相关数据都存在了 /var/lib/docker/image 里面,比如存放镜像数据的 /var/lib/docker/image/devicemapper/repositories.json

That’s all.