设为首页 收藏本站
查看: 1262|回复: 0

[经验分享] Riddler助力Docker容器为runC运行环境做准备

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-21 11:17:02 | 显示全部楼层 |阅读模式
这是一个关于标准化带来的优势的故事,同时介绍如何利用Riddler转换一个Docker容器为runC镜像。Riddler由容器开发者Jess Frazelle研发。  Phil Estes 是IBM开放云技术的高级技术经理,他将在本周多伦多的LinuxCon会议上介绍Riddler的性能。
  运行,运行,运行!
  回顾开放容器,runC是一个开源引擎和规范运行容器,它遵守OCI的规范,包括Docker在内。runC的思想配合远景规划,是为任何供应商控制或云栈提供一个免费开源容器。它是基于Docker的LibContainer,作为与操作系统交互的接口。它是Docker公司自己的核心容器引擎。
  runC可以运行Docker的镜像。它依赖两个组成部分。一个是一组配置指令。这些命令行标志通常追加在Docker运行命令后面;而runC从config.json配置文件中读取配置信息。可以手工创建一个,或者runC将自动创建一个。
  RunC还需要根文件系统,使它可以操作容器。用户可以手动创建一个目录,作为容器的根文件系统或者文件系统可以利用docker export命令从容器中导出。
  埃斯蒂斯说:"通过上述两块内容,runC可以执行一个容器。”
  为什么呢?
  很多场景下,操作runC可能是比操作全功能的容器(如Docker)更合适,埃斯蒂斯解释说。
  它可以提供容器移植到新环境的基础——比如Solaris Zones,或者用于创建新OCI引擎或平台兼容的容器。例如,英特尔的Clear Containers和Hyper.sh均是基于runC实现。
  RunC在尝试新功能,如检查点恢复。Docker的seccomp是在Docker1.10中引入的。
  Estes说:“RunC就是那种可以在高层开发这种能力的工具。”
  开发者同样可以发现runC的便利,它提供一个简洁明了的接口便于快速迭代文件系统和配置中的变更。于是,他还说“我从不担心存储或者后端问题。”
  进入Riddler
  虽然runC可以创建容器配置(“runc spec > config.json”),但是该文件只有基本配置,通常需要再加入各种环境变量。如何让Docker自动获取这些信息呢?
  Riddler让用户可以仅通过运行一个容器就可以为容器创建一个全信息配置文件,同时让Riddler从Docker引擎中画出必要的细节内容。Ridder准确的创建出刚运行的容器的配置文件。Estes介绍说:“是否有挂载的卷、是否采用只读文件系统、是否采用了命名空间,这些信息均会被复制到runC的配置文件中”。
  Riddler同样会增加一些默认配置。例如,seccomp配置是根据Docker的多种假设,例如不允许系统调用。它同样获取docker run命令附加的参数。在Estes的例子中,他运行了date命令来演示这些参数也会被复制。
  其他特性必须手工设定。网络并不是OCI管理,于是这些设定必须手工输入。Riddler提供hook到netns,它使得用户可以调整网络配置。用户还需要为容器创建文件系统。对于这部分,Estes创建了一个脚本用于匹配Riddler获取的用户网络命名空间信息。
  在这些步骤之后,“我们拥有了一个非常类似简单Docker运行的环境。”
  点击观看视频。
  (视频时长5:25,建议在wifi环境下观看)
  解释
  作为如何使用该工具的例子,Estes描述了如何用NGINX复制一个新运行的容器。他采用-d标志来启动软件到后台模式。他还运行了一个容器启动Lynx文本浏览器。
  在这个场景下,对开发者来说runC可以简化很多事情。开发者可以容易的修改运行中容器的配置。容器可以访问开发者目录中的其他文件夹。
  Estes说:“在开发模式,简便在工作中非常有用”。
  runC同样提供了与Linux Capabilities相互协作,它有一系列的系统调用或者资源操作与超级管理员权限。例如Docker,它有一系列的Linux Capabilities设置。通过这些配置,runC提供一系列的设定,便于开发者修改。
  例如,CAP_NET_RAW设定控制用户执行低级别TCP函数的能力,包括使用ping命令执行Internet Control Message Protocol (ICMP)。快速演示表明,开始时ping确实可以工作,之后Estes做出了改变,它就不再工作了。同样,CAP_SYS_ADMIN可以修改为允许或者不允许用户读取和配置宿主机名等功能。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303418-1-1.html 上篇帖子: centos7 docker容器(一)安装与维护详解 下篇帖子: docker创建私有registry 运行环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表