• 程序员修神之路--容器技术为什么会这么流行


    菜菜哥,你上次讲的kubernetes我研究了一下,你再给我讲讲docker呗

    张嘴女人.gif

    docker可很流行呀

    张嘴男人.gif

    kubernetes是容器编排技术,容器不就是指的docker吗?

    张嘴女人.gif

    docker可不等于容器哦,docker只算是容器的一种吧,算了容器的典型代表

    张嘴男人.gif
    容器的诞生

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

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

    容器技术

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

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

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

    微信截图_20191130123457.png

    虚拟机和容器

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

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

    docker介绍

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

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

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

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



  • 相关阅读:
    [SAP ABAP开发技术总结]ALV
    [SAP ABAP开发技术总结]逻辑数据库
    [SAP ABAP开发技术总结]OPEN SQL
    [SAP ABAP开发技术总结]内表操作
    [SAP ABAP开发技术总结]面向对象OO
    [SAP ABAP开发技术总结]反射,动态创建内表、结构、变量
    [SAP ABAP开发技术总结]动态语句、动态程序
    [SAP ABAP开发技术总结]数据引用(data references)、对象引用(object references)
    [SAP ABAP开发技术总结]字段符号FIELD-SYMBOLS
    [SAP ABAP开发技术总结]Form(subroutine)、Function参数传值传址
  • 原文地址:https://www.cnblogs.com/zhanlang/p/11962071.html
Copyright © 2020-2023  润新知