• 容器技术


    Technorati 标签: 容器

    什么是容器

    在一台 16 核 32G 内存的虚拟机上,需要跑 500+ 个用户的网站应用,我们当然希望网站的资源相互隔离,这样一个应用崩溃了,也不会影响其他的应用的运行。

    要实现资源的隔离,最容易想到的当然是开若干虚拟机,在其上安操作系统,然后搭建应用。然而一台主机上,一般就能开10~15个虚拟机,如果在这台机器上开 500 个虚拟机,这台服务器估计早就不堪重负了。

    有没有资源隔离能力不错,而且虚拟化开销还要小的方式,虚拟机实在太重了。

    我们来看一下问题的症结,虚拟机在硬件平台上运行一层软件,抽象出CPU、内存等资源,然后可以在其上运行不同的操作系统、软件等。这种全虚拟化的形式,还有操作系统,当然很

    于是我们引入了容器,它只是把应用和运行时所需要的依赖打包为镜像,所以我们只需要开一个进程就可以运行这个镜像。

    现在容器只是创建一个容器进程无需启动操作系统,这个过程只需要秒级的时间。而且因为可以轻量,可以在非常轻松的让让几十个服务在服务器中跑起来。

    f189b80b-745b-4e9a-921d-0cee07577f91

    下图是虚拟机与容器的对比图,容器直接运行在Linux操作系统上,共享操作系统、依赖库等。
    556ef9cb-238a-4630-a1d1-22f8e10a63f5

    而且容器是直接在CPU本地运行指令,而不需要通过硬件辅助虚拟化等,所以效率会更高,启动会更快,更轻量。

    可以将容器理解为沙盒,每个容器运行一个应用,而且相互隔离,但是容器之间也可以相互通信。优点是:

    • 将应用以及运行的环境打包成镜像,所以部署更快。
    • 资源利用率高:因为不需要Hypervisor层支持,所以性能更好。
    • 便于迁移:可以在任意平台上运行。

    容器属于操作系统级虚拟化:内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程。

    容器带来的额外的东西

    在文章微服务里面我们讲过,所谓微服务,就是将单个功能模块做为一套小型服务进行开发,可以通过自动化部署独立部署,而且实现资源的有效隔离。

    现有的容器技术为微服务提供了很好的实现形式,微服务实例运行在容器上运行,实现了服务器资源的有效隔离。

    而且用户的应用环境非常多,很可能出现开发环境与用户实际环境版本不同,或者说依赖不同,这样应用在运行的时候会出现各种问题。所以容器可以将应用所有的依赖环境进行打包,保证开发和生产的环境一致。做到“一次封装,到处运行”,这又和DevOps结合起来了。

    当然与微服务一样,容器也有很多的缺点,比如复杂性增加了,需要Linux的支持等。

    参考

    容器技术概览

    也可以参见简书主页:https://www.jianshu.com/u/482f183ec380
  • 相关阅读:
    Linux安装git报错 expected specifier-qualifier-list before ‘z_stream’
    Error: Cannot retrieve repository metadata (repomd.xml) for repository: FedoraPeople-sea. Please verify its path and try again
    Linux文件夹文件创建、删除
    confluence 常见问题处理
    git 删除本地和远程服务器分支
    yii DbCriteria相关属性常用方法
    git pull 撤销误操作
    如何在linux上按照行拆分大文件
    linux中rz的用法
    mac版本自带2.7.10版本的python情况下如何安装和使用python3.x
  • 原文地址:https://www.cnblogs.com/dy2903/p/8331020.html
Copyright © 2020-2023  润新知