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,还需待微软揭露更多细节才能得知。
3分钟,9个Q&A让你快速知道Docker到底是什么的更多相关文章
- 30 分钟快速入门 Docker 教程
原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 一.欢迎来到 Docker 世界 1. ...
- 15分钟在阿里云Kubernetes服务上快速建立Jenkins X Platform并运用GitOps管理应用发布
本文主要介绍如何在阿里云容器服务Kubernetes上快速安装部署Jenkins X Platform并结合demo实践演示GitOps的操作流程. 注意:本文中使用的jx工具.cloud-envir ...
- 5分钟APIG实战: 使用Rust语言快速构建API能力开放
序言:Rust语言简介 参与过C/C++大型项目的同学可能都经历过因为Null Pointer.Memory Leak等问题“被” 加班了不知道多少个晚上.别沮丧,你不是一个人,Mozilla Fir ...
- 30分钟快速上手Docker,看这篇就对了!
一.历史演化 1.演化史 2.物理机时代 2.1.图解 一个物理机上安装操作系统,然后直接运行我们的软件.也就是说你电脑上直接跑了一个软件,并没有开虚拟机什么的,资源极其浪费. 2.2.缺点 部署慢 ...
- 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建一个版本
我们可以使用官方 sentry-cli 工具操作 Sentry API,从而来为你的项目管理一些数据.它主要用于管理 iOS.Android 的调试信息文件,以及其他平台的版本(release)和源代 ...
- Docker教程:docker的概念及安装
http://blog.csdn.net/pipisorry/article/details/50754385 Why docker 对于运维来说,Docker提供了一种可移植的标准化部署过程,使得规 ...
- HD4505小Q系列故事——电梯里的爱情
Problem Description 细心的同事发现,小Q最近喜欢乘电梯上上下下,究其原因,也许只有小Q自己知道:在电梯里经常可以遇到他心中的女神HR. 电梯其实是个很暧昧的地方,只有在电梯里,小Q ...
- hdu4505小Q系列故事——电梯里的爱情
小Q系列故事——电梯里的爱情 Time Limit: 300/100 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
- 小Q系列故事——电梯里的爱情
小Q系列故事——电梯里的爱情 Time Limit : 300/100ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total ...
随机推荐
- localdb
<connectionStrings> - <add name="default" connectionString="Data Source=.; I ...
- Java多线程编程核心技术---单例模式与多线程
立即加载/饿汉模式 立即加载就是使用类的时候已经将对象创建完毕. public class MyObject { //立即加载方式==饿汉模式 private static MyObject myOb ...
- 将excel文件中的数据导入到mysql
·在你的表格中增加一列,利用excel的公式自动生成sql语句,具体方法如下: 1)增加一列(假设是D列) 2)在第一行的D列,就是D1中输入公式:=CONCATE ...
- Java学习之Hessian通信基础
一.首先先说Hessian是什么? Hessian:hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能,相比WebService,Hessian更简 ...
- 使用 Ant 自动生成项目构建版本
引言 对 于多版本项目,要提供新版本来跟上新功能或缺陷报告增加的速度,并同时仍然保持可接受的质量水平,可能是一项不小的挑战.构建自动化可确保准确性和消除人 为错误的可能性,从而部分地解决此问题.自动化 ...
- Linux静态库生成指南
Linux静态库生成指南 Linux上的静态库,其实是目标文件的归档文件.在Linux上创建静态库的步骤如下: 写源文件,通过 gcc -c xxx.c 生成目标文件. 用 ar 归档目标文件,生 ...
- mysql 时间格式与日期格式转换,去除datetime中的具体时间
DATE_FORMAT(`addtime`,'%Y-%m-%d') 时间格式转成字符串 time_format('1924-01-02', '%Y-%m-%d') 字符串转成时间格式 CONVERT ...
- InnerClass内部类
1,内部类概述 定义:把A类定义在B类内部,则A类是内部类.如下所示: class Outer1{外部类 String name1; public void show(){ System.out.pr ...
- 使用MVVM框架(avalonJS)进行快速开发
背景 在运营活动开发中,因为工作的重复性很大,同时往往开发时间短,某些情况下也会非常紧急,导致了活动开发时间被大大压缩,同时有些活动逻辑复杂,数据或者状态变更都需要手动渲染,容易出错,正是因为这些问题 ...
- Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些 ...