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

[经验分享] Docker基础

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-2-25 09:25:52 | 显示全部楼层 |阅读模式
什么是容器和为什么选择容器?
容器从根本上改变了我们部署,分发和运行软件的基础。开发者可以开发本地的软件,然后知道了这个软件可以运行,而不用考虑主机环境在哪里。运维工程师则可以集中精力在网络资源和上线时间上,从而花费更少的时间配置环境和担心系统的依赖关系。使用容器的人数目前正在快速增长阶段,从刚起步的创业公司到大规模的企业。开发者和运维工程师有望于在下面的几年里继续的使用容器。

容器是一个应用和它的依赖关系的封装。在偶然一瞥下,你会以为它是一个轻量级的虚拟机,就像VM,一个隔离操作系统的实例,可以用于运行应用。

然而容器有几个优势,传统的VM根本无法实现
  • 容器和主机OS共享资源,这使得他们有更高的效率。容器可以启动和停止在1s之内。应用运行在容器之中并不会引发过度消耗相比于运行在本地主机之中。
  • 容器的便携性,在运行的环境中,有消除的细微改变引起的bug的潜力。它也可以放到一个年龄很大的开发者手中来制止他们说,"这在我的机器上运行的很好"。
  • 容器的轻量级特效意味着开发者可以同时运行许多的容器,这使得可以仿真分布式系统。运维工程师也可以运行更多的容器在一个单主机的机器上而不是简单的使用一个VM。
  • 容器对于终端用和远离部署环境之外的人有好处。用户可以下载和运行复杂的应用,而不需要花费大量时间在配置和安装问题上或者担心系统改变的需求。总之,这个应用的开发者可以避免担心用户环境的不同而导致依赖关系的可靠性。


更重要的是,VM和容器的目的是不同的,VM的目的是完全的仿真外部的环境,而容器的目的是为了让外部应用更加便携和自给自足。

容器VS虚拟机(VMs)
尽管容器和VM看起来有很多相似的地方,它们也有很多不同的地方,用图表就很容易的解释它们。

图表1-1显示了三种应用运行在独立的虚拟机上在一个主机上。超级管理员(Hypervisor)被要求用来创建和运行VMs,控制访问底层的OS和硬件,同时在需要的时候解释系统调用。每一个VM都需要一个完全的OS副本,和运行在上面的应用和提供支持的库。
1456276790899025.jpg
相比之下,图表1-2显示了,同样的三种应用可以运行在容器化的系统上。不像VMs,主机内核是被运行的容器所共享的。这就意味着容器一直被强制运行在与主机相同的内核上。应用Y和Z使用相同的库和可以共享这些数据,而不需要有冗余的拷贝。容器引擎负责用来启动和停止容器,类似于在VM上面的超级管理员(Hypervisor)。然而一个进程运行在容器内部等价于运行与本地进程,而不会引发多余的开支。
1456276797353812.jpg
容器和VMs都可用于隔离运行在相同主机上的应用。VMs从超级管理员哪里增加了一定程度的隔离,VM是一种成熟的技术从而可以被信任。容器则是相对较新的,很多组织都在犹豫是否完全信任容器的隔离特性,在容器特性得到了良好的证明。由于这个原因,很容易发现,在虚拟机里面运行容器的混合系统会占据了两者的优势。
Docker和容器(Containers)
容器是一个很老的概念了,在过去几十年,UNIX操作系统使用chroot命令提供简单的文件系统形式的隔离。从1998年开始,FreeBSD有了jail工具,从而扩展了chroot沙盒到进程中。 Solaris Zone相对来说,在2001年则提供了完全的容器化技术,但是受限于Solaris的系统。在2001年,Parrallels Inc(后来的SWsoft)为linux发布了金融版本的Virtuozzo容器技术,后来在2005年,开放源码成了OpenVZ的核心技术。然后Google为Linux内核开始了Cgroups的开发,然后移动它的基础设施到容器上。Linux Containers(LXC)项目启动与2008年,然后与CGroups,Kernel namaspaces和chroot技术放在一起,来提供一个完全的容器方案。最后在2013年,Docker带来了最后的集装箱难题,技术开始进入主流。

Docker采用了Linux container技术,封装它然后从不同的方式扩展它——主要是通过便携的镜像和用户友好的接口——来为容器的创建和分发提供完全的解决方案。Docker平台有两个主要的元件: Docker Engine负责创建和运行容器。 Docker Hub负责分发容器的云服务。

Docker Engine提供了快速的和方便的借口来运行容器。在这之前,使用LXC技术运行容器需要很多专业知识和手工。Docker Hub提供了大量的公共容器镜像以便下载,允许用户快速的开始和避免了冗余的工作。通过Docker开发的更深入的工具,包括集群管理工具Swarm,,为Docker提供图形借口的Kitematic,为Docker主机提供命令行工具的Machine。

Docker Engine的开放源码,Docker以经成长为一个大的Docker社区,通过公众的帮助来修复bug和进行加强。Docker快速的增长意味着它以及高效的成为了de facto标准,到2015年,这已经到达顶峰,为了建立(Open Container Initiative),一个Docker,Microsoft,CoreOS和许多其它重要的组织赞助的政府的组织,它的使命是为了发展出标准的Docker 容器格式和运行形式。

Docker所带来的改变对于开发软件有重大的意义。没有Docker,容器技术将仍然停留在IT的阴影之中。



运维网声明 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-182520-1-1.html 上篇帖子: Docker数据管理 下篇帖子: Docker架构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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