作为程序员,让我们回忆我们每天从事的熟悉得不能再熟悉的软件开发工作:

在本地搭好开发环境,进行开发工作,完了进行单元测试,把开发好的代码部署到测试系统,重复测试,最后部署到生产系统。

我们不可避免地会遇到这种情况:同样的代码,运行环境发生变化之后无法正常运行。

这种运行环境的变化可以分成不同的维度:

比如代码从程序员的笔记本电脑切换到测试服务器,或者从一台物理服务器切换到公有云/私有云上;
代码依赖的运行库版本发生变化,比如开发时用的python2.7, 但生产机上用的python3
也可能是代码运行的操作系统发生了变化,比如开发及用的ubuntu,生产机用的redhat

程序员除了投入时间在应用程序本身开发上之外,还需要花费额外的精力去处理这种环境或者说infrastructure问题,有的时候很头痛。

作为一个应用程序开发人员,我对底层的这些环境问题不感兴趣,有没有一种办法能使的我不去考虑它们呢?有,使用容器技术。

什么是容器?我们可以从现实生活中容器的概念来类比。

简单地说,一个容器包含了完整的运行时环境:除了应用程序本身之外,这个应用所需的全部依赖、类库、其他二进制文件、配置文件等,都统一被打入了一个称为容器镜像的包中。通过将应用程序本身,和其依赖容器化,操作系统发行版本和其他基础环境造成的差异,都被抽象掉了。

为什么我们要使用容器?那得看看它带来的好处。

既然容器封装了所有运行应用程序所必需的相关的细节,比如应用依赖以及操作系统,这就使得镜像从一个环境移植到另外一个环境更加灵活。比如,同一个镜像可以在Windows或Linux,开发、测试或生产环境中运行。

标准化:大多数容器实现技术基于开放标准,可以运行在所有主流 的Linux 发行版、Microsoft等操作系统上。

容器镜像提供版本控制,这样就可以追踪不同版本的容器,监控版本之间的差异。

容器隔离带来的安全性:一台宿主机上可以运行多个容器,但这些容器内的进程是相互隔离的,且无法相互感知。其中一个容器的升级或者出现故障,不会影响其他容器。

相比虚拟机来说更加轻量级:

虚拟机和容器的目的类似,都致力于对应用程序及其关联性进行隔离,从而构建起一套能够不依赖于具体环境而运行的应用单元。

虚拟机是在物理服务器的上层用软件来模拟特定的硬件系统。Hypervisor位于硬件和系统之间,是创建虚拟机必须的一个部分。虚拟机软件必须使用Hypervisor作为一个中间层,是虚拟机技术的核心,当宿主操作系统启动虚拟机时,会通过hypervisor给虚拟机分配内存,CPU,网络和磁盘等资源,并加载虚拟的操作系统,因而需要消耗宿主机大量的物理资源。

一台宿主机上运行的多个容器化应用共享这台宿主机操作系统的内核,因而不需要虚拟机技术的hypervisor中间层,因而同虚拟机技术相比,更加轻量化,启动速度更快。

为什么这几年来容器技术一下子流行了起来?

随着微服务架构应用开发的普及,很多IT公司纷纷推出了基于微服务架构的新产品,就连SAP这种传统的企业管理软件巨头也发布了很多基于微服务的解决方案,比如Engagement center, revenue cloud等等。

起初微服务提供商倾向于把微服务部署在虚拟机里,这也能实现微服务的隔离性,但无法进行快速扩展,因为前面介绍过的虚拟机的实现原理,其启动需要耗费一些时间,无法立即对瞬时突增的负载或者流量做出反应。并且从成本考虑,使用传统的虚拟机技术,为了实现隔离性,每个应用或者说微服务都必须运行在一个虚拟机里,这种重复和浪费的操作系统和资源的分配,可以通过容器技术来避免,从而大大减少了云服务提供商对硬件的投入,节省了云服务中心的成本。

通俗讲解:什么是容器?为什么我们要使用它?相关推荐

  1. 人工智能算法通俗讲解系列(二):逻辑回归

    2019独角兽企业重金招聘Python工程师标准>>> 今天,我们介绍的机器学习算法叫逻辑回归.它英语名称是Logistic Regression,简称LR. 跟之前一样,介绍这个算 ...

  2. Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解

        Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解 在Hadoop分布式环境下实现K-Means聚类算法的伪代码如下: 输入:参数0--存储样本数据的文本文件inpu ...

  3. 冲突域、广播域的通俗讲解

    冲突域.广播域的通俗讲解 1.冲突域(物理分段)         连接在同一导线上的所有工作站的集合,或者说是同一物理网段上所有节点的集合或以太网上竞争同一带宽的节点集合.这个域代表了冲突在其中发生并 ...

  4. 通俗讲解:图像傅里叶变换

    转自某乎:通俗讲解:图像傅里叶变换 - 知乎 这里我们主要要讲的是二维图像傅里叶变换,但是我们首先来看一张很厉害的一维傅里叶变换动图. 妈耶~厉害哇!它把时域和频域解释的很清楚! 什么!你看不懂! 简 ...

  5. 关于CSS浮动(float,clear)的通俗讲解(经验分享)

    很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...

  6. 二维小波变换_小波变换完美通俗讲解系列之 (一)

    声明:该篇文章转自csdn,原始博主已经找不到了,在这里给出转载博主地址,如有侵权,请私信我删除. https://blog.csdn.net/liusandian/article/details/5 ...

  7. vue标准时间改为时间戳_区块链科普005:什么是时间戳?白话通俗讲解时间戳是什么意思?...

    原标题:区块链科普005:什么是时间戳?白话通俗讲解时间戳是什么意思? 八宝饭区块链:什么是时间戳 时间戳是什么?可能很多人都没有听过,但是作为办公一族应该掌握这个技能.时间戳技术就是数字签名技术一种 ...

  8. Java多数据源最通俗讲解

    Java多数据源最通俗讲解 before after 理论 实操 编码 小总结 before 项目中可能会用到很多的数据源,例如目前这个项目中用到了五个数据源,那么数据源的 配置和数据源的切换就成为了 ...

  9. 通俗讲解 依概率收敛,大数定理和中心极限定理

    通俗讲解 依概率收敛,大数定理和中心极限定理 依概率收敛 首先说一下结论,依概率收敛是一种基础证明工具,可以类比到高数中的极限定义,将一种直觉上的 "逼近某个数" 用数学公式来定义 ...

  10. 广为流传的一个关于项目管理的通俗讲解

    写了这么多硬技术文章,今天转一篇在blog.joycode.net看到的软技术文章,对想通过程序员转型为项目经理的人有一些用处. 广为流传的一个关于项目管理的通俗讲解 古老虾 发表于 2005-11- ...

最新文章

  1. Android运行报错avd,Android Studio出错:无法在模拟器中启动AVD
  2. 世界级投资大师们的至理名言
  3. python连接linux服务器读取txt文件_python 读取Linux服务器上的文件方法
  4. 微信终端自研 C++协程框架的设计与实现
  5. python 32bit数据结构_python实现bitmap数据结构详解
  6. NTP时间服务器实现Linux时间同步
  7. html5 职工入职后台管理系统_ChemCMS是一款基于GO+PHP+MYSQL+HTML5构建的化学内容管理系统
  8. jpa in查询_优选在shopee虾皮怎么发货价格查询皮皮虾云仓
  9. linux命令里的xz是干嘛的,linux xz命令详解
  10. 微服务升级_SpringCloud Alibaba工作笔记0026---Nacos之Linux安装nacos
  11. Elasticsearch 实战1:ES 项目实战(一)Java 集成 Spring Data Elasticsearch(一):简介及环境搭建
  12. android8按键布局,机身按键接口布局合理_手机Android频道-中关村在线
  13. OpenDRIVE工具介绍及地址
  14. Java设计模式(六)装饰器模式-与代理模式的区别-项目实战应用
  15. 经典网络-InceptionV1论文及实践
  16. 史上最简单的spark教程第二章-快速开发部署你的第一个Java+spark程序
  17. 五、伊森商城 前端基础-Vue v-on 事件修饰符 按键修饰符 v-for v-if 和v-show v-else和v-else-if p24
  18. OpenGL BRDF和IBL渲染
  19. matlab怎么列向量归一化语句,matlab向量归一化
  20. 关于如何写好博客的文章,值得分享收藏!

热门文章

  1. HomePod 帮在 Mac 上实现立体声
  2. dubbo原理与核心功能
  3. 几何级数(简单示例)
  4. 通联支付php接口,php对接第三方支付--通联支付(H5版)
  5. Mac电脑实用技巧(转自http://sspai.com/32769)
  6. 普元信息笔试java
  7. 腾讯云Ubuntu系统如何使用 root 用户登录实例
  8. Vue 动态控制输入框的disabled属性
  9. 基于PLC的混凝土搅拌站控制系统软件设计
  10. JAVA之时间计算,键盘录入时间间隔得到未来时间