‘壹’ 怎么用通俗易懂的话来解释Docker(容器)技术
官网的介绍是这样的:
Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications....
其实看完这句话还是不明白究竟是啥的,下面就慢慢解释。不过长话短说的话,把他想象成一个用了一种新颖方式实现的超轻量虚拟机,在大概效果上也是正确的。当然在实现的原理和应用上还是和VM有巨大差别的,并且专业的叫法是应用容器(Application Container)。
为啥要用容器?
那么应用容器长什么样子呢,一个做好的应用容器长得就好像一个装好了一组特定应用的虚拟机一样。比如我现在想用MySQL那我就找个装好MySQL的容器,运行起来,那么我就可以使用 MySQL了。
那么我直接装个 MySQL不就好了,何必还需要这个容器这么诡异的概念?话是这么说,可是你要真装MySQL的话可能要再装一堆依赖库,根据你的操作系统平台和版本进行设置,有时候还要从源代码编译报出一堆莫名其妙的错误,可不是这么好装。而且万一你机器挂了,所有的东西都要重新来,可能还要把配置在重新弄一遍。但是有了容器,你就相当于有了一个可以运行起来的虚拟机,只要你能运行容器,MySQL的配置就全省了。而且一旦你想换台机器,直接把这个容器端起来,再放到另一个机器就好了。硬件,操作系统,运行环境什么的都不需要考虑了。
在公司中的一个很大的用途就是可以保证线下的开发环境、测试环境和线上的生产环境一致。当年在 Bai 经常碰到这样的事情,开发把东西做好了给测试去测,一般会给一坨代码和一个介绍上线步骤的上线单。结果代码在测试机跑不起来,开发就跑来跑去看问题,一会儿啊这个配置文件忘了提交了,一会儿啊这个上线命令写错了。找到了一个 bug 提上去,开发一看,啊我怎么又忘了把这个命令写在上线单上了。类似的事情在上线的时候还会发生,变成啊你这个软件的版本和我机器上的不一样……在 Amazon 的时候,由于一个开发直接担任上述三个职位,而且有一套自动化部署的机制所以问题会少一点,但是上线的时候大家还是胆战心惊。
若果利用容器的话,那么开发直接在容器里开发,提测的时候把整个容器给测试,测好了把改动改在容器里再上线就好了。通过容器,整个开发、测试和生产环境可以保持高度的一致。
此外容器也和VM一样具有着一定的隔离性,各个容器之间的数据和内存空间相互隔离,可以保证一定的安全性。
‘贰’ 《Docker经典实例》pdf下载在线阅读,求百度网盘云资源
《Docker经典实例》([美] Sébastien Goasguen)电子书网盘下载免费在线阅读
链接:https://pan..com/s/1VMftFwlbAVEfCvu2rLFhhQ
书名:Docker经典实例
作者:[美] Sébastien Goasguen
译者:刘斌
豆瓣评分:7.1
出版社:人民邮电出版社
出版年份:2017-2
页数:316
内容简介:
本书结构明晰,示例丰富详实,是全面实用的Docker入门教程。作者全面介绍了Docker相关各种工具和平台,涵盖网络、镜像管理、配置以及包括Kubernetes和Mesos在内的编排和调度生态系统,对私有云和公有云上部署的应用程序都给出了丰富实用的解决方案和示例。本书适合运维人员、系统管理员和开发人员阅读。
作者简介:
作者简介:
Sébastien Goasguen,Citrix高级开源解决方案架构师,主要从事Apache CloudStack项目,帮助开发CloudStack生态系统。他目前是Apache CloudStack项目的副总裁,也是Apache libcloud项目管理委员会的成员。
译者简介:
具有10余年软件开发经验,关注后台开发技术和各种编程语言。做过电子商务、金融、企业系统以及Android手机开发,写过Delphi,也兼做系统管理员和DBA,最近在做与Docker相关的工作。
‘叁’ docker容器的基本概念
1.Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
2.Docker 的优点
Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
1、快速,一致地交付您的应用程序
Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:
您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
2、响应式部署和扩展
Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务或混合环境中运行。
Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
3、在同一硬件上运行更多工作负载
Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。
‘肆’ 《Docker从入门到实战》epub下载在线阅读全文,求百度网盘云资源
《Docker从入门到实战》(黄靖钧)电子书网盘下载免费在线阅读
链接:https://pan..com/s/1CD9s0KI5eNn5Dyt2dcvOyw
书名:Docker从入门到实战
豆瓣评分:7.3
作者:黄靖钧
出版社:机械工业出版社
出版年:2017-6
页数:345
内容简介
本书从Docker的相关概念与基础知识讲起,结合实际应用,通过不同开发环境的实战例子,详细介绍了Docker的基础知识与进阶实战的相关内容,以引领读者快速入门并提高。
本书共19章,分3篇。第1篇容器技术与Docker概念,涵盖的内容有容器技术、Docker简介、安装Docker等。第2篇Docker基础知识,涵盖的内容有Docker基础、Docker镜像、Dockerfile文件、Docker仓库、Docker容器、数据卷、网络管理等。第3篇Docker进阶实战,涵盖的内容有操作系统、编排工具Compose、Web服务器与应用、数据库、编程语言、Docker API、私有仓库、集群网络、Docker安全等。
本书非常适合所有对Docker感兴趣的入门新手阅读。不管是开发人员还是运维人员,都可以通过本书学习Docker的基本知识。即使不是程序员的读者,本书同样适合。普通用户完全可以把Docker作为一个“好玩的工具”来使用,以体验Docker带来的便捷。
作者简介
黄靖钧
全栈开发者,热衷开源技术。长期以来一直使用容器技术作为应用部署方案,在Docker容器实战方面经验丰富。有多年的大规模集群管理经验。曾经从事PaaS与CaaS项目开发。现专注于Serverless与SDN等领域的研究。
‘伍’ 《Docker技术入门与实战》epub下载在线阅读全文,求百度网盘云资源
《Docker 技术入门与实战》(杨保华)电子书网盘下载免费在线阅读
资源链接:
链接:https://pan..com/s/1y1ctQKwIjsZonkXck5K3bA
书名:Docker 技术入门与实战
作者:杨保华
豆瓣评分:5.9
出版社:机械工业出版社
出版年份:2015-1
页数:312
内容简介:
【编辑推荐】
《Docker技术入门与实战》是中国首部Docker着作,一线Docker先驱实战经验结晶,来自IBM和新浪等多位技术专家联袂推荐!
《Docker技术入门与实战》结合企业生产环境,深入浅出地剖析 Docker 的核心概念、应用技巧、实现原理以及生态环境,为解决各类问题提供了有价值的参考。
【内容简介】
在云计算时代,开发者将应用转移到云上已经解决了硬件管理的问题,然而软件配置和管理相关的问题依然存在。Docker的出现正好能帮助软件开发者开阔思路,尝试新的软件管理方法来解决这个问题。通过掌握Docker,开发人员便可享受先进的自动化运维理念和工具,无需运维人员介入即可顺利运行于各种运行环境。
《Docker技术入门与实战》分为三大部分:Docker入门、实战案例和高级话题。第一部分(第1~8章)介绍Docker与虚拟化技术的基本概念,包括安装、镜像、容器、仓库、数据管理等;第二部分(第9~17章)通过案例介绍Docker的应用方法,包括与各种操作系统平台、SSH服务的镜像、Web服务器与应用、数据库的应用、各类编程语言的接口、私有仓库等;第三部分(第18~21章)是一些高级话题,如Docker核心技术、安全、高级网络配置、相关项目等。
《Docker技术入门与实战》从基本原理开始入手,深入浅出地讲解Docker的构建与操作,内容系统全面,可帮助开发人员、运维人员快速部署应用。
【名人推荐】
虽然前几年在容器方面所做的工作不多,但是从2015年起,我们计划将工作重点放在 Docker 等容器技术上。
——杨卫华
新浪微博技术总监
本书作者之一杨保华博士在加入 IBM之后,一直从事云计算与软件定义网络领域的相关解决方案和核心技术的研发,热心关注 OpenStack、Docker 等开源社区,热衷使用开源技术,积极参与开源社区的讨论并提交代码。这使得他既能从宏观上准确把握 Docker 技术在整个云计算产业中的定位,又能从微观上清晰理解技术人员所渴望获知的核心之处。
——刘天成
IBM中国研究院云计算运维技术研究组经理
好的IT技术总是迅速“火爆”,Docker 就是这样。好像忽然之间,在企业一线工作的毕业生们都在谈论 Docker。在IT云化的今天,系统的规模和复杂性,呼唤着标准化的构件和自动化的管理,Docker 正是这种强烈需求的产物之一。这本书很及时,相信会成为IT工程师的宝典。
——李军
清华大学信息技术研究院院长
本书围绕着镜像、容器、仓库三个部分,从实践的角度出发,讲解了 Docker 的安装、配置、使用的方式。在本书的后面几个章节,也介绍了许多 Docker 的实现细节和工作原理。总体而言,本书从实际的案例入手,由浅至深,循序渐进,内容相当丰富。
——王灿
浙江大学计算机学院副教授
Docker 在公司多个项目中正式上线,目前运行稳定,在系统的关键节点使用 Docker 容器集群来快速扩展计算能力效果显着。本书作者之一戴王剑前期的充分调研和测试功不可没。
——徐勋业
浙江中正智能科技有限公司副总裁
本书详细介绍了 Docker 的发展历史、作用、部署方法和应用案例,文笔流畅,通俗易懂,对促进开源软件和虚拟化技术发展很有意义,对加强信息化在各行业的应用有较大的参考价值。
——杨传斌
浙江师范大学计算机学院教授
作者简介:
杨保华 博士,清华大学毕业,现为 IBM 中国研究院研究员。主要从事数据中心网络解决方案的研发与部署,技术方向包括云计算、软件定义网络(SDN)、网络安全等,是国内较早从事 SDN 和网络虚拟化相关技术的推广者,同时也是 DockerPool 开源社区的发起人之一。
戴王剑 资深架构师,多年来一直从事计算机网络、服务器架构设计,负责过多个省级项目的架构设计。热衷开源事业,是 DockerPool 开源社区的发起人之一。
曹亚仑 85后,全栈 Web 开发者,擅长并专注于 SaaS 系统架构设计与研发, 兴趣为 PaaS 和智能可穿戴设备。出版有译着《Arino 无线传感器网络实践指南》以及开源图书《程序员禅修指南》。
‘陆’ 如何使用docker+jenkins实现自动化集成
Docker 介绍
Docker
号称是下一代的虚拟机,它在启动和创建速度、性能、移植性等方面均优于传统虚拟机。Docker 是 PaaS 提供商 dotCloud
开源的一个基于 LXC 的高级容器引擎。它能够让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux
机器上,也可以实现虚拟化。目前,通过 Boot2Docker 已能使 Docker 运行在 Windows 和 OS X 中。Docker
容器完全使用沙箱机制,相互之间没有任何接口。Docker 几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,
他们不依赖于任何语言、框架或系统。
Docker 在其网站上明确地提到的 Docker 的典型应用场景如下:
对应用进行自动打包和部署
创建轻量、私有的 PAAS 环境
自动化测试和持续整合与部署
部署和扩展 Web 应用、数据库和后端服务
在自动化测试领域,Docker 大有取代传统虚拟机技术的趋势,原因如下:
自动化测试依赖的是测试所需要的应用,而并非整个操作系统。因此,传统的虚拟机技术存在资源浪费。
Docker 构建于 LXC 之上。借助 LXC 轻量级的特性,相比于目前的虚拟机技术,Docker 启动更快、资源占用更小。
Docker 比虚拟机轻量、灵活,便于管理。
Docker 标准化的构建方法 (Dockerfile) 和良好的 REST API,使得自动测试和持续集成/部署能够很好的集成进来。
回页首
Sahi 介绍
Sahi 是一个开源的 Web UI 自动化测试框架。尽管它的知名度不及 Selenium,用户群也不及 Selenium 庞大,但它确有它独特的魅力,例如:
基于上下文的页面元素识别机制。
隐式页面加载响应等待机制。
良好的浏览器支持。
优秀的跨浏览器录制回放调试工具 Sahi Controller。
这些特性都大大地加快了自动化测试脚本的开发速度,并降低了维护成本。
Sahi
通过一个用 Java 编写的代理服务器,将用户的脚本转换为 JavaScript 后注入往返的 HTTP
请求及响应中,从而驱动浏览器事件。编程语言方面,除 Sahi 脚本(其本质是一个 JavaScript 库)以外,还支持 Java 和
Ruby。Sahi 有开源和收费两个版本。虽然收费版本提供了很多开源版本不具备的高级特性,不过开源版本已经能够满足大部分的功能要求。点此查看开源版本与收费版本的差异。点此查看Sahi 与其他 Web 自动化测试框架的对比。
回页首
Jenkins 介绍
Jenkins
是一种开源的基于 Java 开发的持续集成工具,前身称作 Hudson。Jenkins
提供了用于监控持续重复工作的软件平台。它支持丰富的插件,用户可以按照需求进行选择安装和配置,以实现生成执行状态表格,自动部署、更新自动化测试包等
高级功能。本文将要介绍 Jenkins 的 Docker 插件,它能够动态地创建 Docker 容器作为 Jenkins Slave
节点,并在执行任务后,自动关闭容器。另外,它还支持一些额外功能,比如当构建任务成功完成后自动将容器保存为镜像、自动将镜像上传到资源库等。
回页首
实例演示
该实例演示如何制作一个运行 Sahi 的镜像以及如何在 Jenkins 上配置 Docker 插件以运行 Sahi 测试脚本。
准备 Docker 镜像
本实例需要准备三个镜像:一个运行 Jenkins,一个运行 Subversion,另外一个运行 Sahi。
首先,制作运行 Sahi 的镜像。Docker Hub 是一个用于分享 Docker 镜像的资源库。目前,该资源库还没有运行 Sahi 的镜像,所以必须自己创建 Dockerfile 来构建镜像。下图是用来制作 Sahi 镜像的目录。
图 1. 制作 Sahi 镜像的目录
下图是 Dockerfile 的文件内容。
图 2. Dockerfile文件内容
整个过程大体分为八个步骤:
指定基础镜像
我们使用的是 evarga/jenkins-slave。该镜像基于 Ubuntu,安装了 SSH 服务,并创建了用户 Jenkins。
替换系统默认更新源。把系统更新源替换为 163 的,后面的软件安装速度会比较快一些。
安装必要的软件(不包括 Oracle Java 和
Sahi):Firefox, Unzip 以及 Xvfb。删除 Open JDK 是为了后面安装 Oracle Java 做准备。Firefox
不用多说,因为该镜像用于 Web UI 自动化测试,所以安装了最新版本的 Firefox。安装 Unzip 是因为后面安装 Sahi
需要用到它。Xvfb(X virtual framebuffer)是一个 X11
显示服务器的实现。它不是将图形在屏幕上显示出来,而是在内存中运行所有的图形操作。对客户端来说,除了无法看到真正的图形显示,没有其他分别。一般称这
种运行方式为 headless。
安装 Oracle Java 8。理论上 Sahi 应当也支持 Open JDK,所以安装 Oracle Java 不是必须的。
安装 Sahi。上传了 zip 文件后,用 Unzip 解压,Sahi 是基于 Java 的,所以解压后即已安装好 Sahi。之后,替换了几个文件,它们的作用如下:
Userdata.properties
userdata.properties 中有个属性叫
proxy_alert.disabled,默认值为 false。用户第一次启动 Sahi Dashboard
的时候,会弹出一个如下图所示的对话框。用户勾选了“Do no show this message again”并点击 Continue
按钮之后,Sahi 修改该属性值为 true。之后就不会在跳出这个对话框了。由于用 headless 的方式运行 Sahi
无法点击该对话框,所以必须事先用一个已将该属性设置为 true 的文件替换 Sahi 默认的 userdata.properties。
图 3. Sahi 代理问题对话框
sahi_example_com
这是一个证书文件。用户第一次在 Sahi Dashboard
中打开 Firefox 时的页面如下图所示。用户需要点击 SSL Manager 链接手动接受 SSL 证书。此时,文件
sahi_example_com 被生成到 userdata/certs 目录下。之后,就不需要再进行该操作了。所以,复制的
sahi_example_com 目的也是为了自动完成这步需要在图形界面下才能完成的操作。
图 4. Sahi 启动页
图 5. SSLManager 的非信任连接页面
browser_types.xml
替换该文件是为了使 Sahi 以 headless
的方式工作。在该文件中,事先添加了一个名字为 firefox-xvfb 的浏览器配置信息。之后,测试脚本就可以指向该浏览器运行。具体配置 Sahi 和 Xvfb 的步骤参考。
添加 init.sh 文件
init.sh 文件用于启动 Xvfb 和 Sahi。其内容如下。
图 6. init.sh 文件内容
“sleep 5”是因为 Sahi 启动需要一点时间,若立即运行测试脚本会导致失败。
修改权限
最终运行的容器是作为 Jenkins Slave 节点用
Jenkins 用户运行,因此将整个/usr/local 目录及子目录的所有人修改为 Jenkins,并给 Shell
文件添加执行权限。Jenkins 用户是在基础镜像 evarga/jenkins-slave 中创建的,所以在这个 Dockerfile
里没有创建 Jenkins 用户的语句。
指定默认执行的命令
CMD ["/usr/sbin/sshd","-D"] – 该语句令镜像默认启动 SSH 服务。事实上,这条语句也可以不添加,因为 evarga/jenkins-slave 的 Dockerfile 中已包含该语句。
一
切就绪之后,在该目录中执行“docker build -t shenrui/sahi –rm=true”。命令成功执行后,通过“docker
images”应当可以查看到名为“shenrui/sahi”的镜像。该镜像已经上传到 Docker Hub,有需要的读者可以自行拉取。
Sahi
镜像构建好之后,接下来准备 Jenkins 容器。Docker Hub 上已有官方的 Jenkins 镜像,直接用命令“docker pull
jenkins”拉取。在 Docker 主机上,创建一个目录(例如,/data/jenkins_home),并修改权限(chmod
777)以便 Jenkins 容器能读写该目录,然后用命令“docker run -d -t --name myjenkins -p
8080:8080 -v /data/jenkins_home:/var/jenkins_home jenkins”启动。此时,打开
http://<Docker Host IP>:8080 应当可以看到 Jenkins 的管理页面。
同样地,直接拉取 Docker Hub 的 Subversion
的镜像(docker pull bsboiko/subversion)。不过,还需要做进一步的配置。步骤如下:
用命令“docker run -i -t bsboiko/subversion /bin/bash”以交互的方式启动 Subversion 容器。
在容器中创建目录 /var/svn/repos(mkdir -p
/var/svn/repos),并基于该目录创建 Subversion 资源库(svnadmin create
/var/svn/repos)。
在资源库目录下的 svnserve.conf
文件中删除“password-db = passwd”前面的注释符 #,并在 passwd 文件中添加一行“shenrui =
password”。
用命令“docker commit <container id> mysvn”把上面所做的修改保存下来创建一个新镜像 mysvn。
最后,用命令“docker run -t -d -p
3690:3690 --name mysvn mysvn svnserve -d --foreground -r
/var/svn/repos”启动 mysvn 容器。启动时,添加容器到主机的端口映射“-p 3690:3690”以便之后直接通过主机 IP
提交测试脚本。
至此,Docker 上有两个正在运行的容器(docker ps),名字分别是 myjenkins 和 mysvn。
‘柒’ 谁可以简单介绍一下docker到底是干什么用的
1)测试:Docker 很适合用于测试发布,将 Docker 封装后可以直接提供给测试人员进行运行,不再需要测试人员与运维、开发进行配合,进行环境搭建与部署。
2)测试数据分离:在测试中,经常由于测试场景变换,需要修改依赖的数据库数据或者清空变动 memcache、Redis 中的缓存数据。Docker 相较于传统的虚拟机,更轻量与方便。可以很容易的将这些数据分离到不同的镜像中,根据不同需要随时进行切换。
3)开发:开发人员共同使用同一个 Docker 镜像,同时修改的源代码都被挂载到本地磁盘。不再因为环境的不同而造成的不同程序行为而伤透脑筋,同时新人到岗时也能迅速建立开发、编译环境。
4)PaaS 云服务:Docker 可以支持命令行封装与编程,通过自动加载与服务自发现,可以很方便的将封装于 Docker 镜像中的服务扩展成云服务。类似像 Doc 转换预览这样的服务封装于镜像中,根据业务请求的情况随时增加和减少容器的运行数量,随需应变。
‘捌’ 可以在docker容器里跑windows么 / 网络技术编程
不可以!
Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:
1.Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用
2.LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的
3.隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
4.网络管理相对简单,主要是基于namespace隔离
5.cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)
6.docker对disk的管理比较有限
7.container随着用户进程的停止而销毁,container中的log等用户数据不便收集
针对1-2,有windows base应用的需求的基本可以pass了; 3-5主要是看用户的需求,到底是需要一个container还是一个VM, 同时也决定了docker作为 IaaS 不太可行。
‘玖’ 什么是 docker 容器技术
Docker是什么?
简单得来说,Docker是一个由GO语言写的程序运行的“容器”(Linux containers, LXCs); 目前云服务的基石是操作系统级别的隔离,在同一台物理服务器上虚拟出多个主机。Docker则实现了一种应用程序级别的隔离; 它改变我们基本的开发、操作单元,由直接操作虚拟主机(VM),转换到操作程序运行的“容器”上来。
Docker是为开发者和系统管理员设计的,用来发布和运行分布式应用程序的一个开放性平台。由两部分组成:
Docker Engine: 一个便携式、轻量级的运行环境和包管理器。(注* 单OS vs 单线程,是不是跟NodeJS特别像?)
Docker Hub: 为创建自动化工作流和分享应用创建的云服务组成。(注* 云端镜像/包管理 vs npm包管理,是不是跟npm特别像?)
从2013年3月20日,第一个版本的Docker正式发布到 2014年6月Docker 1.0 正式发布,经历了15个月。 虽然发展历程很短,但Docker正在有越来越流行的趋势。
其实Container技术并非Docker的创新,HeroKu, NodeJitsu 等云服务商都采用了类似这种轻量级的虚拟化技术,但Docker是第一个将这这种Container技术大规模开源并被社区广泛接受的。
好的部分
Docker相对于VM虚拟机的优势十分明显,那就是轻量和高性能和便捷性, 以下部分摘自:KVM and Docker LXC Benchmarking with OpenStack
快
运行时的性能可以获取极大提升(经典的案例是提升97%)
管理操作(启动,停止,开始,重启等等) 都是以秒或毫秒为单位的。
敏捷
像虚拟机一样敏捷,而且会更便宜,在bare metal(裸机)上布署像点个按钮一样简单。
灵活
将应用和系统“容器化”,不添加额外的操作系统,
轻量
你会拥有足够的“操作系统”,仅需添加或减小镜像即可。在一台服务器上可以布署100~1000个Containers容器。
便宜
开源的,免费的,低成本的。由现代Linux内核支持并驱动。注* 轻量的Container必定可以在一个物理机上开启更多“容器”,注定比VMs要便宜。
生态系统
正在越来越受欢迎,只需要看一看Google的趋势就知道了,docker or LXC.
还有不计其数的社区和第三方应用。
云支持
不计其数的云服务提供创建和管理Linux容器框架。