微信号:yswl-wx

介绍:有容云(Yourun Cloud),专注原创内容,分享Docker、容器技术、容器云等内容.

访谈 |一个开发者是如何一步步走上容器这条路的?

2016-01-07 21:31 有容云
听一个程序猿说,理解大规模机器增减和应用程序部署的来龙去脉对一个开发者来说非常重要。这类似于要成为一个专业的音乐家,你知道如何使用你的乐器,但是如果你不知道一个录音棚是如何工作的,或者如何适应一个交响乐团,那么你在这样的环境中工作会变得非常困难。是这样么猿们?那么今天就跟小编一起,来看看一位开发者的“容器”之旅!
首先,我们说的此“容器”非彼“容器”。Docker听说过么?是了,我们要说的就是时下以Docker为代表的【容器技术】。

Q:
嘉宾你好,对于并不了解容器技术的人来说,要如何向我们表达它的重要性?
A:
在软件开发的世界里,让你的代码进入我们生活并使它发挥作用跟你把它编写出来一样重要。因此,为了弥合开发(Dev)和部署(Ops)之间的空隙,我会从头开始介绍容器技术。为什么是容器?因为有强力的证据表明,容器是机器抽象的下一步:使计算机成为场所而不再是一个东西;而理解容器,是我们共同的旅程。
Q:
我们该从哪里着手了解?
A:
我先介绍下容器化(containerization)背后的概念。包括容器和虚拟机的区别,以及容器构建背后的逻辑以及它是如何适应应用程序架构的。我会跟大家探讨轻量级的 Linux 操作系统是如何适应容器生态系统,还会讨论使用镜像创建可重用的容器。最后我会介绍容器集群如何使你的应用程序可以快速扩展。
Q:
我们从第一个概念开始,容器跟虚机存在什么区别?
A:
虚拟机是运行在物理宿主机上的软件抽象,好处是它允许你在一台硬件主机上运行多个模拟计算机,充分利用你的硬件资源、获得很多的扩展能力。而如果你不再需要虚拟机,你可以关闭并删除它的镜像。但是,虚机存在的两个问题,一是浪费空间,二是浪费时间。
举个例子
假如你在一个主机上创建三个虚拟机,主机有 12 个 CPU,48 GB 内存和 3TB 的存储空间;每个虚拟机配置有4 个
CPU,16 GB 内存和 1TB 存储空间。但是,所有分配给一个虚拟机的资源,无论是什么,都是专有的。每台机器都分配了 16 GB 的内存。如果第一个虚拟机永不会使用超过 1 GB 分配的内存,剩余的 15 GB 就会被浪费在那里。如果第三个虚拟机只使用分配的 1TB 存储空间中的 100GB,其余的 900GB 就成为浪费空间。这里没有资源的流动。每台虚拟机拥有分配给它的所有资源。因此,在某种方式上我们又回到了虚拟机之前,把大部分金钱花费在未使用的资源上。

另外,虚机跑起来需要很长时间。如果你处于基础设施需要快速增长的情形,即使增加虚拟机是自动的,你仍然会发现你的很多时间都浪费在等待机器上线。


虚机模拟图

Q:
容器能解决什么问题?
A:
现在我们来说容器。概念上来说,容器是一个 Linux 进程,Linux 认为它只是一个运行中的进程。该进程只知道它被告知的东西。另外,在容器化方面,该容器进程也分配了它自己的 IP 地址。这点很重要,重要的事情讲三遍,这是第二遍。在容器化方面,容器进程有它自己的 IP 地址。一旦给予了一个 IP 地址,该进程就是宿主网络中可识别的资源。然后,你可以在容器管理器上运行命令,使容器 IP 映射到主机中能访问公网的 IP 地址。建立了该映射,无论出于什么意图和目的,容器就是网络上一个可访问的独立机器,从概念上类似于虚拟机。
这是第三遍:容器是拥有不同 IP 地址从而使其成为网络上可识别的独立 Linux 进程。
还是刚才的例子
容器/进程以动态、合作的方式共享主机上的资源。如果容器只需要 1GB 内存,它就只会使用 1GB。如果它需要 4GB,就会使用 4GB。CPU 和存储空间利用也是如此。CPU、内存和存储空间的分配是动态的,和典型虚拟机的静态方式不同。所有这些资源的共享都由容器管理器来管理。所以,容器能非常快速地启动。

总的来说就是:你获得了虚拟机独立和封装的好处,而抛弃了静态资源专有的缺陷。另外,由于容器能快速加载到内存,在扩展到多个容器时你能获得更好的性能。


容器 IP图

Q:
容器怎样配置和管理?
A:
Linux 操作系统被所有容器所共享,减少了容器足迹的重复和冗余。每个容器只包括该容器特有的部分。你可以用它所需的组件来配置容器。一个容器组件被称为层(layer)。层是一个容器镜像。你从一个基本层开始,这通常是你想在容器中使用的操作系统,容器管理器只提供你所要的操作系统在宿主操作系统中不存在的部分。当你构建你的容器配置时,你需要添加层,例如你想要添加网络服务器时这个层就是 Apache,如果容器要运行脚本,则需要添加 PHP 或 Python 运行时环境。分层非常灵活。如果应用程序或者服务容器需要 PHP 5.2 版本,你相应地配置该容器即可。如果你有另一个应用程序或者服务需要 PHP 5.6 版本,没问题,你可以使用 PHP 5.6 配置该容器。不像虚拟机,更改一个版本的运行时你需要经过大量的配置和安装过程;对于容器你只需要在容器配置文件中重新定义层。
所有上面描述的容器的各种功能都由一个称为容器管理器(container manager)的软件控制,比如最流行的容器管理器是 Docker 。下面这张示意图展示的就是Docker,宿主操作系统是 CentOS 的主机情景。

CentOS 主机上的Docker

小编
好的,感谢嘉宾给我们带来的分享。由于时间关系,后半部分的内容我们明天再讨论,同一时间,不见不散。PS:嘉宾观点出至 deis ,译文linux - ictlyh 。
请输入对话


关注云舒网络

云舒网络深圳CIO协会理事长单位
深圳市IT服务商协会
云计算产业协会会员单位
自主知识产权核心技术MRP协议
虚拟化、云桌面解决方案提供商


长按二维码,识别并关注


400 998 1227
www.cloudsoar.com


 
有容云 更多文章 云舒助力企业SAAS化,出席开目软件2015用户大会 云舒网络亮相开目软件2015用户大会,现场搭建“企业级定制化SAAS平台” 【知识分享】扒一扒那些虚拟桌面不为人知的事 ,三张图告诉你什么是VDI 双十一IT管理福利大放送:手把手教你搭建企业私有云平台 趣谈|云领域的“莞式服务”
猜您喜欢 覆盖equals时请遵守通用约定 员工借钱给老板?借贷宝想让员工为企业融资提供定价和增信 来,给迷茫中的你推荐一篇干货 【干货】测试评估:14种排序算法和PHP数组 HTTP/2 头部压缩技术介绍