ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

容器技术为什么会这么流行

2020-10-15 07:02:25  阅读:313  来源: 互联网

标签:容器 依赖 每个 为什么 虚拟机 流行 进程 运行


容器的诞生

在传统的软件部署方式中,程序员需要把要发布的应用程序打成包发给运维人员,然后由运维人员在生产环境进行部署。当随着应用的版本迭代越来越多,应用的依赖库版本错综复杂,往往会出现开发环境和生产环境不一致的情况发生,而且由于多数情况下采用微服务的架构,每个团队都有可能使用不同版本的依赖库,并有可能在升级的时候替换掉他们,因而同一个应用程序采用相同版本的依赖库是多么的重要。

image

当应用程序比较少或者都是一些单体应用的时候,可以利用虚拟机来隔离每个服务,通过虚拟机的虚拟化技术来为每个应用程序提供不同的运行环境。但是当拆分为微服务之后,每个服务会变的小而多,这个时候如果为每个应用程序分配一个虚拟机,资源耗费是相当多的,但是每个虚拟机上运行多个微服务又会发生依赖库版本的问题,如果有一种起到类似虚拟机隔离作用,但是成本比虚拟机低很多的技术该有多好?

容器技术

得益于linux的容器技术,现代开发者已经由传统的虚拟机方式转向linux容器技术。容器类似虚拟机,但比虚拟机开销要小的多,并且同样把每个应用都隔离开来。容器技术允许你在同一台服务器上运行多个服务,而且还可以根据每个服务提供不同的运行环境。

虚拟机中的进程运行在虚拟机的操作系统中,而运行在容器中的进程实际是运行在宿主机的操作系统中,只是表面看来好像运行在容器的沙盒一样,但实际上确实是和其他进程相互隔离的。

linux之所以能实现容器这种功能,得益于它的命名空间和控制组。linux命名空间时每个进程相互隔离,只能看到它自己的系统资源,例如:文件,进程,网络等,而linux的控制组技术能够限制每个进程可以使用的资源的最大量。一个技术进行隔离,一个技术进行限制,这就导致了容器技术要比虚拟机要灵活的多。

image

虚拟机和容器

一个虚拟机的正常运行,需要运行自己的一系列系统进程,只是这些系统进程就耗费了大量资源。容器和虚拟机相比较就显得轻量的多,它允许在相同配置的硬件基础上运行更多数量的应用。虽然容器本身也有消耗,但是和虚拟机系统的消耗比起来要小的多。

image

虚拟机是利用软件技术将物理硬件虚拟化为多个虚拟硬件资源,从而被每个虚拟机的操作系统使用。虚拟机里的进程会进行虚拟机的系统调用,虚拟机的指令会通过软件技术变为宿主机上真正的cpu指令,而容器中的进程执行的指令不需要任何的虚拟化过程,直接会被cpu执行,所以单纯在执行指令的过程中,虚拟机要比容器的执行过程要长,资源耗费要多。

docker介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

Docker容器平台的出现把linxu容器化技术推向了一个高潮,它不仅简化了程序部署的方式,更简化了打包应用和依赖,使容器真正做到了在不同的操作系统之间移植,甚至一个完整的操作系统也可以被打包成一个可移植的镜像。

运行docker包的前提是,目标机器一定要运行docker。

当你的应用被打包成docker镜像之后,无论在什么操作系统中运行,它都能看见相同的文件,相同的依赖库,因为这些依赖库已经被一起打包到了docker镜像中,即使目标机器上安装了正确的版本的依赖库,它也会只用镜像中的依赖库,这就是程序员期盼的无论何时何地的环境一致性呀

更多精彩文章

image

标签:容器,依赖,每个,为什么,虚拟机,流行,进程,运行
来源: https://blog.51cto.com/zhanlang/2541843

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有