Docker容器热迁移研究历程chapter1:go语言学习

本文探讨了Docker容器热迁移的研究,重点在于Docker使用libcontainer与CRIU项目结合实现容器迁移的问题。由于CRIU不支持nested namespace的热迁移,导致docker容器在迁移后失去与docker daemon的关联。为解决此问题,作者计划深入学习Go语言,理解Docker源码,并探索如何在execdriver层维护嵌套父子关系。
摘要由CSDN通过智能技术生成

         由于Docker项目是由go语言编写,根据我前一段时间的研究思路的整理,我大致划分来一下我的研究思路。

          我研究了Docker的架构模式如下:

          研究了该架构后我初步了解了docker背后的容器管理技术(http://www.cnblogs.com/plxx/p/5483100.html),Docker 是通过调用libcontainer这一对lxc封装好的容器管理接口来实现对Docker容器的管理。libcontainer目前已经整合CRIU项目基于检查点的checkpoint/restore的保存恢复的解决方案,仅就libcontainer而言已经可以实现容器的热迁移功能。然而对于docker容器,由于criu的解决方案并不能支持nested namespace的热迁移,故docker容器在迁移后,docker daemon与docker容器之前的父子关系将无法恢复,使得迁移后的docker容器脱离了docker daemon的控制,docker无法对该容器进行任何操作。

         根据上述分析,Docker容器热迁移目前的主要问题就是在与当前CRIU项目的解决方案不能支持nested namespace(嵌套命名空间)的迁移,虽然libcontainer自身可以实现热迁移,可无法维持Docker容器的父子关系。

         我对该问题进行初步的思考,对症下药,既然要Docker原生支持容器的热迁移,我需要从Docker的源码进行解析,Docker是一款基于Go语言开发的工具,所以我需要了Go语言的基础知识来对Docker源码进行解读。进一步充分了解namespace的机制,解析nested namespace 的迁移的难点所在。最后通过在Docker execdriver层完成对libcontianer的热迁移接口调用并可以维持docker容器内部的嵌套父子关系。

          由此开始进入Go语言的基础知识的学习~


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值