前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker源码分析(3)---镜像 (2)

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

作者头像
月牙寂道长
修改2018-04-03 11:43:30
6950
修改2018-04-03 11:43:30
举报
文章被收录于专栏:月牙寂月牙寂

说明:此文章为腾讯云机器自动从本人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操作。

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年05月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 5、TagStore
  • 5.1、tag
  • 5.2、 image_get
  • 5.3、image_inspect
  • 5.4、push
  • 5.5、小结
  • 6、总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档