10个Q&A快速认识Docker
5761
2016-07-25 10:31
文章摘要:转载自某网站 编者按:Docker和虚拟化技术有何不同? Container和虚拟机器有什么不同? 10个问答让你快速认识什么是Docker 不论是Google、Amazon、微软、VMware都纷纷拥戴,加入Docker和Container所掀起的新世代云端虚拟化行列,这2项技术成为了IT界的新显学。 Docker和Container到底是什么?以下10个Q&A告诉你。
转载自某网站

编者按:Docker和虚拟化技术有何不同? Container和虚拟机器有什么不同? 10个问答让你快速认识什么是Docker

不论是Google、Amazon、微软、VMware都纷纷拥戴,加入Docker和Container所掀起的新世代云端虚拟化行列,这2项技术成为了IT界的新显学。 Docker和Container到底是什么?以下10个Q&A告诉你。

Q1:Container技术和伺服器虚拟化是一样的技术吗?

A:不是。两者虽然都属于虚拟化的技术,目标都是为了将一套应用程式所需的执行环境打包起来,建立一个孤立环境,方便在不同的硬体中移动,但两者的运作思维截然不同。简单来说,常见的传统虚拟化技术如vSphere或Hyper-V是以作业系统为中心,而Container技术则是一种以应用程式为中心的虚拟化技术。

传统虚拟化技术从作业系统层下手,目标是建立一个可以用来执行整套作业系统的沙箱独立执行环境,习惯以虚拟机器(Virtual Machine)来称呼。而Container技术则是直接将一个应用程式所需的相关程式码、函式库、环境配置档都打包起来建立沙箱执行环境,为了和传统虚拟化技术产生的虚拟机器区分,Container技术产生的环境就称为Container。

Q2:一般常见的虚拟机器和Container有何不同?

A:最明显的差别是,虚拟机器需要安装作业系统(安装Guest OS)才能执行应用程式,而Container内不需要安装作业系统就能执行应用程式。 Container技术不是在OS外来建立虚拟环境,而是在OS内的核心系统层来打造虚拟执行环境,透过共用Host OS的作法,取代一个一个Guest OS的功用。 Container也因此被称为是OS层的虚拟化技术。

Q3:为何Container是轻量级虚拟化技术?

A:因为Container技术采取共用Host OS的作法,而不需在每一个Container内执行Guest OS,因此建立Container不需要等待作业系统开机时间,不用1分钟或几秒钟就可以启用,远比需要数分钟甚至数十分钟才能开启的传统虚拟机器来的快。

Q4:Container技术是全新的技术吗?

A:不是,早在1982年,Unix系统内建的chroot机制也是一种Container技术。其他如1998年的FreeBSD jails、2005年出现的Solaris Zones和OpenVZ,或像是Windows系统2004年就有的Sandboxie机制都属于在作业系统内建立孤立虚拟执行环境的作法,都可称为是Container的技术。

直到2013年,dotCloud这家PaaS服务公司开源释出了一套将Container标准化的平台Docker,大受欢迎,所以,dotCloud决定以Docker为名成立新公司力推。

Q5:Docker如何实现Container标准化?

A:Docker采用了aufs档案系统来设计一个可以层层堆叠的Container映象档,将Container内的所有程式(包括应用程式、相关函式库、设定档),都打包进Docker映象档,并且提供了一个Dockerfile设定档来记录建立Container过程的每一个步骤包括参数。只要在任何支援Docker平台的环境中,就可以从这个映象档来建立出一个一模一样的Container来执行同一个应用程式。如此一来,应用程式等于是可以透过Docker映象档,或什至只需要Dockerfile,就能将程式执行环境带着走,移动到任何支援Docker的环境中。 Docker公司也释出API,可以用来控制所有的Container相关指令,任何人只要使用同一套Docker,就等于有了同一套管理和建立Container的方法,也就等同于将Container运用标准化了。

Q6:一个Container映象档内可以安装多少应用程式?

A:一个Container的映象档内可以安装多支程式,例如同时安装Ubuntu、Apache、MySQL、Node.js、Ruby等。不过,Docker官方建议,一只程式安装在一个Container内,再把这些Container叠起来提供一个完整的服务。

Docker称这是一种Microservices(微服务)的新软体架构,将组成一个应用系统的每一个Stack,拆解成许多小型服务,例如Apache服务、MySQL服务、Node.js服务、Ruby服务,每一个服务都是包在Container里的一只程式,例如MySQL服务就是部署在Container内的MySQL。

这么做的好处是可以建立一个松散耦合的弹性应用程式架构,也能轻易地抽换其中一个Container,例如要升级MySQL,只需要重新载入新版MySQL的Container映象档,就可以完成资料库升级,不用将整套应用系统停机。

Q7:Container内不是不需要OS,为何需要OS的基础映象档?

A:OS基础映象档的用途是让Container拥有这OS的档案系统,例如使用ubuntu基础映象档就可以让Container建立ubuntu的根目录架构,而不是用来执行一个OS执行实例。

Q8:Docker对Devops有何帮助?

A:因为Docker透过Dockerfile来记录建立Container映象档的每一个步骤,可以将建立应用程式执行环境的过程和配置参数,完整地记录下来。开发人员和维运人员之间可以利用Dockerfile来沟通对执行环境的讨论。甚至结合版本控制服务如GitHub,可以让Dockerfile具备版本控制功能,能将基础架构程式化(Infrastructure as code)来管理。

Q9:可以在Windows Server环境中执行Docker吗?

A:还不行。目前Docker只能在Linux平台上执行,但是微软10月中刚宣布要在下一波Windows Server改版时内建Docker引擎,未来同一份Docker映象档能否跨Linux和Windows OS,还需待微软揭露更多细节才能得知。

Q10:如何找到懂Docker技术的人?

A:目前Docker公司还未在台设点,但有一个Docker Taipei社群,成员截至10月有383人。

Docker Taipei也预计配合Docker总公司举办的全球HackDay活动,在11月1日举办HackDay。参加作品将直接发布到美国和全球Docker开发者一起评比,奖品是明年到美国参加Docker技术大会的资格。

快速

 

轻量级虚拟化Container技术则是一种以应用程式为中心的虚拟化技术,不需要安装Guest OS。

快速2


版权声明:

凡本网内容请注明来源:T媒体(http://www.cniteyes.com)”的所有原创作品,版权均属于易信视界(北京)信息科技有限公司所有,未经本网书面授权,不得转载、摘编或以其它方式使用上述作品。

本网书面授权使用作品的,应在授权范围内使用,并按双方协议注明作品来源。违反上述声明者,易信视界(北京)信息科技有限公司将追究其相关法律责任。

评论