Docker系列技术分享(一) 容器技术和Docker

什么是容器?

首先来看下什么是容器技术,容器是由英文 “Container” 翻译过来的,这个单词即有容器也有集装箱的意思,在这里其实更偏向于集装箱,这点也可以从Docker的Logo里看出来,不能说是毫无关系,可以说是一摸一样!我们可能是因为好读所以才译为容器。

在这里插入图片描述

从集装箱的用途我们可以形象的理解容器技术的场景。

集装箱的出现大大降低了航运的运输成本,因为集装箱是固定规格,整齐摆放,提升了空间利用率。当你的货物有大有小,且随意摆放,这时候会有大量的空间会被浪费,装卸货也很麻烦,就像下图这样:

在这里插入图片描述

有了集装箱之后,我们可以把不同大小的货物都装进不同规格的集装箱,这些集装箱都是方的,可以拼接摆放,虽然单个集装箱内部空间利用率可能不高,但是整个船的空间利用率会提升。

细一点的朋友可能会问,可不可以找几个比较大的集装箱,然后大货物小货物一起放,大货物的间隙还可以放点小货物,极致利用资源这样不是更加节省了空间?

这就说到了集装箱的另一个作用:隔离

当我们需要不同货物分开放置,避免货物之间交叉污染,这样使用集装箱可以有效的隔离不同类型的货物,这一点在IT领域更加实用,除了公司揭不开锅的情况下,生产环境我们通常不会在同一台服务器部署多个服务,虽然混部可以更有效的利用服务器资源,但是给业务带来了风险。一个是隔离级别不够,避免服务之间互相影响,导致出现对外不可用的情况,还有一个是资源不好评估,因为按照固定规格来评估服务部署数量是比较准确的,虽然服务器大部分时间在空跑,会造成比较大的浪费。但如果混部的话,同一台机器上服务和服务之间的峰值以及不同服务的业务高峰期均无法准确评估,也就无法评估出需要多少台机器,更别说后续的扩缩容了,如果你需要同时部署很多个服务,那么多个服务所在的机器管理也是一件相当麻烦的事情。

有了上面集装箱的例子,让再来看下IT领域的容器技术是什么?

容器就好比集装箱,操作系统就好比轮船,而我们的服务就是货物,我们需要使用容器来规格化服务的资源使用,如限制只使用固定大小的CPU、内存等,同时容器要能把服务隔离起来,不被外界任何进程所干扰。当然容器的创新并不仅仅是在实现一个集装箱上,还包括如何自动管理和呈现上万个这样的箱子,这才是问题的关键。

容器的核心技术就两点:

  1. 通过隔离保证各个服务之间不互相影响,这是通过内核提供的Namespace技术实现的一个障眼法,不同容器之间、容器和宿主机之间不可见。
  2. 通过限制不同容器的资源(CPU、内存等)使用,来提高硬件的使用率,这是使用内核Cgroup技术来做资源限制,保证单个容器使用资源不会占有其他容器资源,也不会占用宿主机上其他进程资源。

所以说容器其实就是Linux几个内核技术的组合,后面会单独讲这几个技术原理。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值