本篇内容介绍了“Container是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
以下将从不同时期应用部署、运维的优缺点展开说明。
直接在物理机上部署应用,无法做到应用之间资源隔离以及合理利用。
资源不隔离。一个内存使用量比较大的app可能消耗所有的内存资源,导致其他app无法正常提供服务。
所有app共享一份物理机运行环境(kernel+app)。无法做到按照app定制化运行环境或则app对特定内核的要求。
如果将多个app部署在不同的物理机上。a. 需要购买大量物理机器,花费较大。b. 需要不同app对于硬件要求不同,需要特殊定制。c. 需要花费大量运维时间。
当前,cpu、内存等硬件发展速度远远高于软件的速度。很多老的系统自需要少量的cpu或者内存,但是其独占一台机器,造成资源浪费。
虚拟机的出现,弥补了上面的不足。虚拟机将物理机器资源统一抽象为单元,按需分配。不同的实例之间资源隔离、独立的内核。但是随着互联网的快速发展, 要求app能够快速扩展资源以及实例。当前的虚拟机机器显然不能满足此需要。其主要有以下几点
镜像臃肿。每个镜像少则几百兆,正常都在几个GB大小。
创建和启动时间开销大,不利于快速重组。(不能满足互联网弹性计算要求)
性能损耗大
额外的资源开销大
很早以前就有了容器化的概念。近几年随着互联网井喷式的发展,容器机器有了一个很好的契机暴露在大众的眼前。
镜像体积小。只包括应用以及所依赖的环境,没有内核
创建和启动快。不需要启动GuestOS,应用启动开销基本就是应用本身启动的时间开销
无GuestOS,无hypervisor,无额外资源开销,资源控制粒度更小,部署密度大
使用的是真实物理资源,因此不存在性能损耗
轻量级
容器也有缺点
隔离性相对虚拟机弱。由于和宿主机共享内核,带来很大的安全隐患,容易发生逃逸。
如果某些应用需要特定的内核特性,使用容器不得不更换宿主机内核。
容器技术发展
linux chroot->google cgroup->lxc(linux container)->docker(libContainer)
Hyper = Hypervisor + Docker镜像
Hyper是一个基于虚拟化技术(hypervisor)的Docker引擎。官方认为虽然Hyper同样通过VM来运行Docker应用,但HyperVM里并没有GuestOS,相反的,一个HyperVM内部只有一个极简的HyperKernel,以及运行的Docker镜像。这种Kernel+Image的”固态”组合使得HyperVM和Docker容器一样,实现了ImmutableInfrastructure的效果。借助VM天然的隔离性,Hyper能够完全避免LXC共享内核的安全隐患。
Docker项目最初是由一家名为dotCloud的平台即服务厂商所打造,其后该公司更名为Docker。与Warden类似,Docker同样在起步阶段使用LXC,而后利用自己的 libcontainer库将其替换下来。与其它容器平台不同,Docker引入了一整套与容器管理相关的生态系统。其中包括一套高效的分层式容器镜像模型、一套全局及本地容器注册表、 一个精简化REST API以及一套命令行界面等等。在后期发展阶段,Docker公司还构建起一套名为Docker Swarm的容器集群管理解决方案。
快速构建基于容器的分布式应用
具有容器的所有优点
提供原生的资源监控
Docker与虚拟机原理对比:
由于容器技术很早就有,Docker最核心的创新在于它的镜像管理,因此有人说:
Docker = 容器 + Docker镜像
Docker镜像的创新之处在于使用了类似层次的文件系统AUFS,简单说就是一个镜像是由多个镜像层层叠加的,从一个base镜像中通过加入一些软件构成一个新层的镜像,依次构成最后的镜像,如图
“Container是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。