纯干货:21天带你玩转容器
可能有些人已经使用过容器,但考虑知识体系的完整性,我们还是从最基本的容器知识开始带大家进入容器的世界。
首先介绍一下什么是容器?Docker是一种轻量级的操作系统虚拟化解决方案,它想达到一次构建到处运行,类似于Java虚拟机的效果,它最初诞生于2013年,是基于go语言的实现,最初是由dotCloud公司的内部一个业余项目,后来项目开源加入了Linux基金会,然后现在代码在github上进行维护,有兴趣的同学可以下载下来读源码,这样会对于大家对Docker的原理的理解会有很大的帮助。Docker的基础是基于Linux容器技术,在Linux容器技术的基础上,Docker进行了进一步的封装,让大家不去关心容器的管理,使得操作更加便捷。用户操作Docker容器,就像操作一个快速轻量级的虚拟机那样简单。
从结构上来看,容器和虚拟机还是有很大不同的。左图的虚拟机的Guest层,还有Hypervisor层在Docker上已经被Docker Engine层所取代,在这里我们需要知道,Guest OS 是虚拟机安装的操作系统,是一个完整的系统内核,另外Hypervisor可以理解为硬件虚拟化平台,它在后Host OS以内核驱动的形式存在。虚拟机实现资源的隔离的方式是利用独立的Guest OS,以及利用Hypervisor虚拟化CPU、内存、IO等设备来实现的,对于虚拟机实现资源和环境隔离的方案,Docker显然简单很多。然后Docker并没有和虚拟机一样利用一个独立的Guest OS执行环境的隔离,它利用的是目前当前Linux内核本身支持的容器方式,实现了资源和环境的隔离,简单来说,Docker就是利用Namespace 实现了系统环境的隔离,利用了cgroup实现了资源的限制,利用镜像实例实现跟环境的隔离。由此可见,Docker有着比虚拟机更少的抽象层。由于Docker不需要Hypervisor实现硬件资源的虚拟化,所以运行在Docker容器上的程序,直接使用的都是实际物理机的硬件资源。因此在cpu、内存、利用率上,Docker将会在效率上具有更大的优势。此外,Docker直接利用虚拟机机的系统内核,避免了虚拟机启动时所需要的系统引导时间和操作系统运行的资源消耗,利用Docker能够在几秒钟之内启动大量的容器,是虚拟机无法办到的。快速启动低资源消耗的优点,使Docker在弹性云平台自动运维系统方面具有很好的应用场景。与虚拟机相比,Docker在以下几个方面具有很大的优势,它能够快速的交付和部署,Docker在整个开发周期都可以完美辅助你实现快速交付,Docker允许开发者本地应用,直接进入到可持续的开发流程中。例如开发者可以使用一个标准镜像构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码,Docker可以快速创建容器快速迭代应用程序,整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。此外,容器的启动时间是秒级的,大量节约开发、测试、部署的时间。还有一个非常关键的点,就是Docker能够高效地部署和扩容,Docker容器几乎可以在任意平台上运行,包括虚拟机、物理机、公有云、私有云、个人电脑、服务器等,这种兼容性,可以让用户把一个应用程序从一个平台直接迁移到另外一个平台。Docker的兼容性和轻量性的特性可以轻松的实现负载的动态管理,你可以快速扩容或方便的下线你的应用和服务,这种速度趋近于实时!此外Docker还具有更高的资源利用率,一台主机上可以运行数千个Docker容器,容器除了运行其应用之外,基本不消耗额外的系统资源,使得应用性能高,系统开销小,而传统的虚拟机方式则需要运行不同的应用,耗费大量的资源,此外Docker还可以有更简单的管理使用Docker只需要小小的修改就可以替代以往大量的更新工作,所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理!
容器基础知识已掌握,想要学习得更深入?华为云DevCloud &云容器服务联合重磅出品——21天转型容器实战营!依托华为云云容器服务,带领开发者学习和体验Docker, kubernetes, Istio等大热技术!汇聚华为云容器技术尖端专家,结合CKA认证精编21天课程,理论和实践双管齐下,助力开发者打通容器任督二脉,挑战21天,拿下CKA! 11.20-12.3限时入营,摆好学习姿势,12.4-12.24学习实践,闯关打卡,21天见证进步。现在进入华为云学院( https://edu.huaweicloud.com/ )
报名学习吧。
原文地址:http://blog.51cto.com/13988201/2320124