设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

深入浅出Docker(一):Docker核心技术预览

2014-9-1 16:25| 发布者: joejoe0332| 查看: 4241| 评论: 0|原作者: 肖德时|来自: InfoQ

摘要: Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源。Docker提供了一种在安全、可重复的环境中自动部署软件的方式,它的出现拉开了基于 ...


  典型的Linux在启动后,首先将 rootfs 设置为 readonly, 进行一系列检查, 然后将其切换为 "readwrite" 供用户使用。在Docker中,初始化时也是将 rootfs 以readonly方式加载并检查,然而接下来利用 union mount 的方式将一个 readwrite 文件系统挂载在 readonly 的rootfs之上,并且允许再次将下层的 FS(file system) 设定为readonly 并且向上叠加, 这样一组readonly和一个writeable的结构构成一个container的运行时态, 每一个FS被称作一个FS层。如下图:



  得益于AUFS的特性, 每一个对readonly层文件/目录的修改都只会存在于上层的writeable层中。这样由于不存在竞争, 多个container可以共享readonly的FS层。 所以Docker将readonly的FS层称作 "image" - 对于container而言整个rootfs都是read-write的,但事实上所有的修改都写入最上层的writeable层中, image不保存用户状态,只用于模板、新建和复制使用。



  上层的image依赖下层的image,因此Docker中把下层的image称作父image,没有父image的image称作base image。因此想要从一个image启动一个container,Docker会先加载这个image和依赖的父images以及base image,用户的进程运行在writeable的layer中。所有parent image中的数据信息以及 ID、网络和lxc管理的资源限制等具体container的配置,构成一个Docker概念上的container。如下图:



2.4 安全性: AppArmor, SELinux, GRSEC

  安全永远是相对的,这里有三个方面可以考虑Docker的安全特性:

  1. 由kernel namespaces和cgroups实现的Linux系统固有的安全标准;
  2. Docker Deamon的安全接口;
  3. Linux本身的安全加固解决方案,类如AppArmor, SELinux;

  由于安全属于非常具体的技术,这里不在赘述,请直接参阅Docker官方文档


3. 最新子项目介绍


  我们再来看看Docker社区还有哪些子项目值得我们去好好研究和学习。基于这个目的,我把有趣的核心项目给大家罗列出来,让热心的读者能快速跟进自己感兴趣的项目:


  1. Libswarm,是Solomon Hykes (Docker的CTO) 在DockerCon 2014峰会上向社区介绍的新“乐高积木”工具: 它是用来统一分布式系统的网络接口的API。Libswarm要解决的问题是,基于Docker构建的分布式应用已经催生了多个基于Docker的服务发现(Serivce Discovery)项目,例如etcd, fleet, geard, mesos, shipyard, serf等等,每一套解决方案都有自己的通讯协议和使用方法,使用其中的任意一款都会局限在某一个特定的技术范围內。所以Docker的CTO就想用libswarm暴露出通用的API接口给分布式系统使用,打破既定的协议限制。目前项目还在早期发展阶段,值得参与。
  2. Libchan,是一个底层的网络库,为上层 Libswarm 提供支持。相当于给Docker加上了ZeroMQ或RabbitMQ,这里自己实现网络库的好处是对Docker做了特别优化,更加轻量级。一般开发者不会直接用到它,大家更多的还是使用Libswarm来和容器交互。喜欢底层实现的网络工程师可能对此感兴趣,不妨一看。
  3. Libcontainer,Docker技术的核心部分,单独列出来也是因为这一块的功能相对独立,功能代码的迭代升级非常快。想了解Docker最新的支持特性应该多关注这个模块。


4. 总结

  Docker社区一直在面对技术挑战,从容地给出自己的解决方案。云计算发展至今,有很多重要的问题没有得到妥善解决,Docker正在尝试让主流厂商接受并应用它。至此,以上Docker技术的预览到此告一段落,笔者也希望读者能结合自己的实际情况,尝试使用Docker技术。因为只有在亲自体会的基础之上,像Docker这样的云技术才会产生更大的价值。


5. 作者简介

肖德时, Red Hat Engineering Service/HSS 内部工具组Team Lead. Nodejs开源项目nodejs-cantas Lead Developer。擅长企业内部工具的设计以及实现。开源课程Rails Starter的发起人。rubygem: lazy_high_charts的Maintainer。twitter账号:xds2000,邮箱:xiaods@gmail.com


6. 参考文献:

  1. https://tiewei.github.io/cloud/Docker-Getting-Start/
  2. http://docs.docker.com/articles/
  3. http://www.slideshare.net/shykes/docker-the-road-ahead
  4. http://www.centurylinklabs.com/meet-docker-ceo-ben-golub/
  5. http://lwn.net/Articles/531114/
  6. http://en.wikipedia.org/wiki/Aufs
  7. http://docs.docker.io/en/latest/terms/filesystem/
  8. http://docs.docker.io/en/latest/terms/layer/
  9. http://docs.docker.io/en/latest/terms/image/
  10. http://docs.docker.io/en/latest/terms/container/
  11. https://stackoverflow.com/questions/17989306/what-does-docker-add-to-just-plain-lxc

转自 http://www.infoq.com/cn/articles/docker-core-technology-preview?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clk


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部