码迷,mamicode.com
首页 > 其他好文 > 详细

容器技术

时间:2018-01-22 21:20:21      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:class   ops   结合   应用   打包   play   就是   沙盒   dock   

Technorati 标签:

什么是容器

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

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

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

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

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

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

技术分享图片

下图是虚拟机与容器的对比图,容器直接运行在Linux操作系统上,共享操作系统、依赖库等。
技术分享图片

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

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

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

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

容器带来的额外的东西

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

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

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

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

参考

容器技术概览

容器技术

标签:class   ops   结合   应用   打包   play   就是   沙盒   dock   

原文地址:https://www.cnblogs.com/dy2903/p/8331020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!