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 条评论
登录 后参与评论

相关文章

来自专栏前端学习心得

Vue2.0之vue-router

1413
来自专栏noteless

[二] JavaIO之File详解 以及FileSystem WinNTFileSystem简介

1.可选的与系统有关的前缀  字符串   比如盘符,"/" 表示 UNIX 中的根目录,"\\\\" 表示 Microsoft Windows UNC 路径名

713
来自专栏我的博客

ZendFrameWork组件Layout学习笔记

试图助手可以理解成为控制页面布局,按照这个顺序进行页面的渲染 $this->headLink() 只是生成link标记占位符,例如 <?php echo $t...

3457
来自专栏十月梦想

php的四种标签风格

注意:第三四种风格标签基本淘汰,主要推荐使用第一种和第二种,第二种在xml种会被默认解析其他的xml的<?开始

544
来自专栏无原型不设计

Mockplus组件样式库一键解决风格复用

在Mockplus3.3版本中,新增了组件样式库,可以快速复用组件风格,同时可以将组件风格保存到库中。

19210
来自专栏闻道于事

HTML表格表单综合——用户注册表

今天学习了表格和表单知识,我综合了他们添加了一些拓展知识做了一个用户注册表,以下面代码来整理表格和表单知识: <!DOCTYPE html PUBLIC "-/...

3996
来自专栏菩提树下的杨过

flex4/flash builder中动态加载Module并与之交互的正确方式

关于flex中动态加载Module的文章,网上有很多,但多半是基于flex3的,如果在flash builder/flex4中按他们所提供的方法去做,最后将mo...

1667
来自专栏跟着阿笨一起玩NET

js的alert和confirm美化

window对象的alert和confirm标准方法在不同浏览器的显示效果不太相同,有个相同点是都不是很美观。我们的想法是使用js和css分别仿照它们,提供另一...

241
来自专栏从零开始学自动化测试

pytest文档5-fixture之conftest.py

前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用...

713
来自专栏逸鹏说道

1.移动先行之谁主沉浮----我的第一个程序

如果移动方向有任何问题请参考===> 异常处理汇总-移动系列 (http://www.cnblogs.com/dunitian/p/4867701.html) ...

3089

扫描关注云+社区