3分钟,9个Q&A让你快速知道Docker到底是什么

不论是Google、Amazon、Microsoft、VMware都纷纷拥戴,加入Docker和Container所掀起的新时代云端虚拟化行列,这两项技术成为了IT界的新趋势。Docker和Container到底是什么?以下9个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:可以在WindowsServer环境中执行Docker吗?

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

时间: 2024-10-20 22:48:18

3分钟,9个Q&A让你快速知道Docker到底是什么的相关文章

15分钟在阿里云Kubernetes服务上快速建立Jenkins X Platform并运用GitOps管理应用发布

本文主要介绍如何在阿里云容器服务Kubernetes上快速安装部署Jenkins X Platform并结合demo实践演示GitOps的操作流程. 注意:本文中使用的jx工具.cloud-environments等做过改造用以适配阿里云Kubernetes容器服务,并未在自建Kubernetes集群中做过验证. 先决条件:首先,需要在 阿里云容器服务控制台 创建一个Kubernetes集群,本次实践使用的环境信息如下:master1 192.168.0.119master2 192.168.0

5分钟APIG实战: 使用Rust语言快速构建API能力开放

序言:Rust语言简介参与过C/C++大型项目的同学可能都经历过因为Null Pointer.Memory Leak等问题"被" 加班了不知道多少个晚上.别沮丧,你不是一个人,Mozilla Firefox的开发者们同样经历过这个问题.浏览器可以说是我们日常使用最为频繁的软件了,目前主流的浏览器主要 有Google Chrome.Internet Explorer.Mozilla Firefox.为了提升用户体验,Mozilla就已经启动了多线程渲染的计划.然而,面对大型的C/C++工

3分钟教你如何在Word里快速制作单斜线和多斜线表头

Word表格里面斜线表头应该如何制作呢?你是否还不知道呢?不用担心今天教大家如在表格里面快速制作单斜线和多斜线表头,非常简单保证你一看就会. 1. 制作单斜线表头 方法(1).直接设置法: 操作步骤:鼠标点击表头单元格--[表格工具]--[设计]--[边框]--[斜下框线],然后在里面输入内容即可! 方法(2).绘制法: 操作步骤:鼠标点击表头单元格--[表格工具]--[布局]--[绘制表格],然后在表格里面手动绘制出斜线表格. 2. 制作多斜线表头 操作步骤:首先我们要点击表头单元格,然后鼠标

大数据与机器学习的一些博文整理

Spark VS MapReduce 时间节约66%,计算节约40% http://mp.weixin.qq.com/s?__biz=MzA3MjY1MTQwNQ==&mid=200820787&idx=1&sn=638a4b16445a5ee7a184b7a9becf4d5d&scene=2&from=timeline&isappinstalled=0#rd 数据挖掘十大算法总结--核心思想,算法优缺点,应用领域 http://mp.weixin.qq.c

hdu4505 小Q系列故事——电梯里的爱情(水题)

Problem Description http://acm.hdu.edu.cn/showproblem.php?pid=4505 细心的同事发现,小Q最近喜欢乘电梯上上下下,究其原因,也许只有小Q自己知道:在电梯里经常可以遇到他心中的女神HR. 电梯其实是个很暧昧的地方,只有在电梯里,小Q才有勇气如此近距离接近女神,虽然觉得有点不自在,但次数多了,女神也习惯了小Q的存在,甚至熟悉到仿佛不说上句话自己也都觉得不合适了.可是,他们的谈话也仅仅限于今天天气不错啊或是你吃了吗之类的,往往在对方微笑点

5分钟弄懂Docker!

尽管之前久闻Docker的大名了,但是天资愚钝,对其到底是个啥东西一直摸不清,最近花了一段时间整理了一下,算是整理出一点头绪来.官网的介绍是这样的:Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications....其实看完这句话还是不明白究竟是啥的,下面就慢慢解释.不过长话短说的话,把他想象成一个用了一种新颖方式实现的超轻量虚拟机,在大概效果上也是

hdu4505小Q系列故事——电梯里的爱情

小Q系列故事——电梯里的爱情 Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 3626    Accepted Submission(s): 2284 Problem Description 细心的同事发现,小Q最近喜欢乘电梯上上下下,究其原因,也许只有小Q自己知道:在电梯里经常可以遇到他心中的女神HR. 电梯其实是个很暧昧的地方,只有在电梯

01. SpringCloud实战项目-五分钟搞懂分布式基础概念

SpringCloud实战项目全套学习教程连载中 PassJava 学习教程 简介 PassJava-Learning项目是PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. PassJava 是一款Java面试刷题的开源系统,可以用零碎时间利用小程序查看常见面试题,夯实Java基础. PassJava 项目可以教会你如何搭建SpringBoot项目,Spring Cloud项目 采用流行的技术,如 SpringBoot.MyBatis.Redis. MySql. Mon

docker讲解和命令汇总

docker 什么是docker? Docker是Docker.inc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在GitHub上,基于Go语言并遵从Apache2.0协议开源(可以商业). Docker项目的目标是实现轻量级的操作系统虚拟化解决方案. Docker是通过内核虚拟化技术(namespaces及cgroups等)来提供容器的资源隔离与安全保障等.由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机VM额外的操