docker源码分析(3)---镜像 (2)

说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。

申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。

龚浩华,QQ 29185807,月牙寂 道长

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

5、TagStore

在代码docker\daemon\daemon.go

func NewDaemonFromDirectory(config *Config, eng *engine.Engine) (*Daemon, error) {

初始化了一个tagStore

然后在

func (daemon *Daemon) Install(eng *engine.Engine) error {中

调用了Install

我们先看下tagStore是什么。下面是个人在机器上做测试用的一些镜像

tagStore保存了当前可以运行的镜像信息。

下面我们详细看下tagStore

代码在docker\graph\tags.go

这里面有一个Repositories,是一个map的map,最外层的key是Repository,里面的则是tag

先看初始化

这个是加载文件。

如果文件不存在则保存文件。

这里的加载和保存都是json的文件的操作

下面是向Engine注册handler

这里注册了很多的handler

那么下面我们详细的介绍几个

5.1、tag

tag是对image重新打一个新tag

解析参数,然后调用了Set函数

先查找image,然后更具repoName查找对应的Repositorie,如果有则返回,没有则保存一个新的Repositorie,并将tagStore保存到文件

5.2、 image_get

image_get调用的是CmdGet,用于获取image信息

首先查找image,然后将image信息输出。这个比较简单

5.3、image_inspect

image_inspect调用的CmdLookup,输出的是image的spect信息

这里先查找,然后输出信息。

下面是查找image

先从store查找,查找不到,则从graph中获取

最终的都是从graph中获取

5.4、push

push和pull是类似的,这里就介绍一个

这里调用了poolAdd防止重入

这里涉及到另外一个模块registry的操作,就不深入跟了。大致的过程就是,通过poolAdd,防止重入,然后将image的信息,发送到registry中

poolAdd,通过一个map来防止重入,返回了一个chan。

chan会在调用poolRemove中close掉

5.5、小结

tagStore提供了一些image的操作,像Engine注册了handler

6、总结

在本文中,简单的介绍了,关于image的一些模块,模块之间的相互配合,完成相对于的image操作。

文中如果有哪里讲解的不对的地方,还请见谅,望指正。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

【连载-4】数据中心网络虚拟化 配置管理技术

在构建虚拟网络时,管理员需要进行大量的配置工作,例如端口的ip地址和VXLAN配置等等。显然,没有人愿意在系统每次启动时都将繁琐的配置工作重复一遍,所以将配置信...

2645
来自专栏SDNLAB

数据中心网络虚拟化 配置管理技术

在构建虚拟网络时,管理员需要进行大量的配置工作,例如端口的ip地址和VXLAN配置等等。显然,没有人愿意在系统每次启动时都将繁琐的配置工作重复一遍,所以将配置信...

3184
来自专栏web前端教室

10.7-*春燕同学的学习周总结【web前端零基础课】

一个完整的nodejs的应用,由以下三部分组成:1,引入require模块,2,用createServer创建一个服务器,3,接收、响应请求(回调)

673
来自专栏FreeBuf

内核漏洞利用:通过WARBIRD在Windows 10上提升权限

在这篇文章中,我想谈一谈通过基于Windows内核的exploit来提升权限。之所以没有使用像HackSys Extreme Vulnerable Window...

2658
来自专栏月牙寂

k8s源码分析-----kubelet(4)imageManager

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

3557
来自专栏木头编程 - moTzxx

找到一款免费的网页天气插件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

882
来自专栏听雨堂

从MapX到MapXtreme2004[5]-自定义工具

参见月光宝盒的文章http://jerry429.blogchina.com/2149736.html 参见 《MapXtreme2004_DevGuide_A...

1635
来自专栏LanceToBigData

MySQL(十)之视图

前言 前面给大家介绍了查询语句,感觉写的还不错的,喜欢的可以去查看。今天给大家分享的是MySQL中的视图。 视图(View):视图是由查询结果形成一张虚拟的表。...

24010
来自专栏编程

ansible2.4 源码分析-自定义inventory解析插件实现

微信公众号:进击的大杂烩 通过上一篇文章,初步的分析了ansible2.4的一个运行流程,没有对 ansible 解析 source 的过程进行详细分析。本文通...

27710
来自专栏代码世界

Cookie、Session登陆验证相关介绍和用法

一、Cookie和Session   首先、HTTP协议是无状态的;所谓的无状态是指每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系...

3567

扫码关注云+社区