博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】docker源码分析(3)---镜像 (2)
阅读量:4031 次
发布时间:2019-05-24

本文共 1285 字,大约阅读时间需要 4 分钟。

 

本文QQ空间链接:

 

本文CSDN博客链接:

 

 

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操作。

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

 

 

 

龚浩华

QQ 月牙寂 道长 29185807

2016年5月4日

(版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)

 

如果你觉得本文对你有帮助,可以转到你的朋友圈,让更多人一起学习。

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

 

你可能感兴趣的文章
Linux中的进程
查看>>
学习python(1)——环境与常识
查看>>
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
深度学习库安装与使用
查看>>
keras句子分类 keras_demo_for_sentence_classification (simplified version)
查看>>
MySQL for Windows 解压缩版配置安装
查看>>
MySQL必知必会(读书笔记)
查看>>
MySQL必知必会(读书笔记二)
查看>>
Pyhton、Numpy、Pandas排序小结
查看>>
pandas时间序列
查看>>
pandas时间序列频率处理
查看>>
绘图和可视化(matplotlib)
查看>>
绘图和可视化(pandas)
查看>>
绘图和可视化(seaborn)
查看>>
Vim日常使用
查看>>
计算机网络第一记:网络核心
查看>>
信息检索:基于知识图谱和深度学习的文本表示和搜索(Explicit and distributed semantics for text representation and retrieval)
查看>>
计算机网络第二记:协议层次
查看>>
计算机网络第三记:网络安全
查看>>
深度学习训练中如何处理NaNs
查看>>