docker – 你应该知道的10件事
容器并不是一个全新的技术,但这并不妨碍Docker如风暴一样席卷整个世界。
如果你在IT圈里,你一定听说过Docker。就算与其他热门技术,如:Puppet/Chef,Hadoop或者MongoDB放在一起,Docker仍然让你耳目一新。
不过就算Docker现在怎样的如日中天,这并不意味着它一定适合你。就如同我在这篇 Tech Pro Rearch 的分析文章中读到的一样,“对于是否要采用Docker作为企业的未来技术方向,你需要的是谨慎!”
在你决定尝试Docker之前,先了解以下这10点:
1. Docker是一种软件打包和发布技术
现代软件系统一般都由各种可运行的二进制文件,库文件,配置文件和其他依赖组成。在一台电脑上完成装配已经是非常困难和复杂的事情,要“发布”这些软件的时候,事情会变的更加复杂。一旦你开始发布过程,你就需要找到一种能够让这些组件正确打包的方式,还要考虑如何把打包好的软件放到它们应该去的地方。Docker就是这样一种帮助你进行软件打包的方式,无论你的软件有多少依赖,发布到哪里,其他开发人员的机器或者是生产环境;Docker都给你提供一种简单易用而且标准化的方式。
2. Docker并不是一种全新的技术
Docker的出现不过几年的时间,但是容器技术已经存在几十年了。容器技术在主机时代已经被证明是非常有用的技术,这让Docker的成功看上去更像是时势造英雄的结果,包括Linux的流行,虚拟化的大规模应用和云计算的兴起都给Docker技术的火热创造了必要条件。
3. 基本上大家都支持Docker
无论你选择哪家技术供应商,基本上他们100%的支持Docker。从亚马逊AWS,到RedHat到Google,每一家能很好的支持Docker。
4. Docker 不仅仅可以跑在Linux上面
虽然Docker起源于Linux平台,但是微软正在大力拥抱Docker技术。Docker依赖于很多在Windows平台上并不存在的技术,比如Linux容器技术(LXC),cgroup和命名空间(namespaces)技术。所以微软正在开足马力在Windows Server上提供对应的能力以便与Docker进行集成。实际上,微软在Windows中也使用自己的容器化技术很多年了,现在所要做的就是让这些技术能够更好的兼容Docker,因为Docker已经成为事实上的标准。
5. Docker可以让你像管理虚拟机一样管理CPU,内存,网络和磁盘资源
Docker是围绕Linux的cgroup来实现的,cgroup的作用就是控制容器可以使用的各种计算机资源,包括cpu,内存,网络和磁盘。在这一点上Docker提供了与虚拟机同样的能力,让你可以把计算机的一部分资源分配给一部分用户或者进程,这样他们就不会占用所有的计算资源;同时,Docker又不会像VMware所提供的虚拟化一样带来那么巨大的资源浪费(虚拟机必须运行整个操作系统,而Docker只是对应用进行虚拟化)。
6. 启动Docker容器比启动虚拟机快的多的多(毫秒级vs分钟级)
在一台服务器上运行多个作业的传统方式是启动多个虚拟机,然后在不同的虚拟机上运行不同的作业。因为虚拟机必须启动整个操作系统,它就会很慢,一般都需要数分钟的时间。同时这些虚拟机还非常消耗资源,因为操作系统本身就要吃掉很多资源。容器可以解决同样的问题,但是启动容器和启动一个进程是同一级别的,所以Docker让你可以节省掉操作系统所带来的资源浪费,以进程级别的消耗来提供与虚拟机类似的隔离能力。
7. Docker还不会完全替代虚拟机,至少短期内不会
相对于虚拟机,Docker并不是一种非黑即白的替代方案,这主要是因为Docker依赖于底层标准化的操作系统,而虚拟机是当前解决这个问题最好的方式。但是,这也意味着Docker是依赖于某种操作系统的,所以你不可能在一台容器化主机上同时运行Windows和Linux应用,你需要至少2台分别运行Windows和Linux的容器化主机才行。同时,就Docker当前的技术发展情况来看,容器的隔离能力还做得不到和虚拟机同样的级别;因此对于有些多租户的场景来说,Docker可能并不那么适用。
8. Docker的发展速度实在是太快了
在你登上Docker这趟列车之前,你要知道你上的是新干线而不是蒸汽机车,每小时400公里的速度可不是闹着玩的。看看这个仅仅存在了1年半的技术,它的API已经发布了15个版本,你就知道它的变化有多快了。就算Docker正在快速的成熟,并且已经逐渐具备了企业级软件的能力,但是它并不提供10年技术支持,而着可能是很多企业所需要的。
注:现在Docker的版本已经是1.12。
9. Docker并不是没有竞争对手
虽然Docker很流行,它并不缺少竞争对手。比如CoreOs最近也发布了一个名为Rocket的产品,Docker最好的Linux伴侣Ubuntu也在发展它自己的LXD容器技术。这些竞争对手多少都在撕扯Docker封闭的生态系统。在Docker的世界里,所有的东西都要围绕Docker registry来运行,你要么适用Docker所提供的公共服务,要不在自己的数据中心中部署一套,这并不是免费的。
10. Docker有风险,入市需谨慎
和任何一种新兴的技术一样,你需要循序渐进。从技术的角度来说,你需要了解很多该做的和不该做的。但最重要的一点,这不仅仅是几行代码那么简单,你进入的是一个生态,而这个社区可能并不适合你。你应该先多参加一些社区活动,如:Meetup,邮件列表,订阅些微信公众号啥的;慢慢对它进行了解,然后再决定是否应该投入更多的时间。
无论Docker怎样,容器技术都会继续盛行下去,因为容器让现代软件技术和计算机技术变的更加简单易用。而在容器这个领域里,Docker是毋庸置疑的领导者,你没有办法回避这个事实。但是,到底以怎样的方式接受,接受多少,多快,你一定要根据自己企业的现状来考虑。
相关阅读:
docker4dotnet #1 前世今生 & 世界你好
http://devopshub.cn/2016/07/08/docker4dotnet-1-overview-and-helloworld/
docker4dotnet #2 容器化主机
http://devopshub.cn/2016/07/13/docker4dotnet-2-docker-machine-create-dockerized-hosts/
DockerCon 2016 – 微软带来了什么?
http://devopshub.cn/2016/06/22/dockercon-2016-with-microsoft/
Real-World Docker: 10 Things We’ve Learned
http://www.slideshare.net/rightscale/webinar-real-world-docker-2014-1209-v3-1
(本文在SlideShare上可能无法正常访问,可以通过在devopshub订阅号中输入d4dtools获取)
Why Docker… and why now?
http://www.techrepublic.com/article/why-docker-and-why-now/
Docker and Microsoft partner to bring container applications across platforms
http://news.microsoft.com/2014/10/15/dockerpr/#sm.000uatmy5115te5avb62jyeq9a5fg
请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息
docker – 你应该知道的10件事的更多相关文章
- 【转载】在IT界取得成功应该知道的10件事
在IT界取得成功应该知道的10件事 2011-08-11 13:31:30 分类: 项目管理 导读:前面大多数文章都是Jack Wallen写的,这是他的新作,看来要成为NB程序员还要不停的自我总结 ...
- (0)开始 Raspberry Pi 项目前需要知道的 10 件事
https://www.digikey.cn/zh/articles/techzone/2017/feb/10-things-to-know-before-starting-a-raspberry-p ...
- 使用Office 365前,企业必须要知道的10件事
目前的市场上充斥着很多关于微软Office 365的炒作,相信厂商.客户或者企业的都有自己不同的考虑.Office 365是微软云版本的Office,用户可以通过互联网创建一个帐户,付款.下载应用安装 ...
- 在IT界取得成功应该知道的10件事
导读:人人似乎都同意IT行业是一个艰难领域,但怎样才能克服逆境,成为一名成功的IT专业人士呢?下文这些特质应该是关键.此文作者Jack Wallen,他在前段时间写过不少文章讨论IT职场,比如退出IT ...
- 关于NoSQL数据库你应该知道的10件事
关系数据库模型已经流行了几十年了,但是一种新类型的数据库——被称为NoSQL,正在引起企业的注意.下面是关于它的优势和劣势的一个概述.二十多年以来,对数据库管理来说,关系数据库(RDBMS)模型一直是 ...
- digitalocean教程:你应该知道的10件事
DigitalOcean VPS性价比高,全球拥有多处机房,无须备案,非常适合守规矩的中国用户使用.digitalocean优惠码.digitalocean速度.digitalocean评测是网友关心 ...
- 关于C#你应该知道的2000件事
原文 关于C#你应该知道的2000件事 下面列出了迄今为止你应该了解的关于C#博客的2000件事的所有帖子. 帖子总数= 1,219 大会 #11 -检查IL使用程序Ildasm.exe d #179 ...
- 关于WPF你应该知道的2000件事
原文 关于WPF你应该知道的2000件事 以下列出了迄今为止为WPF博客所知的2,000件事所创建的所有帖子. 帖子总数= 1,201 动画 #7 - 基于属性的动画 #686 - 使用动画制作图像脉 ...
- 《Offer一箩筐》求职之前你必须知道的 4 件事!!
「MoreThanJava」 宣扬的是 「学习,不止 CODE」. 如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力! Hi~ 这里是 ...
随机推荐
- VisualVM通过jstatd方式远程监控远程主机
配置好权限文件 [root@test bin]# cd $JAVA_HOME/bin [root@test bin]# vim jstatd.all.policy grant codebase &qu ...
- JAVA语言中的修饰符
JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...
- webpack入门教程之Hello webpack(一)
webpack入门教程系列为官网Tutorials的个人译文,旨在给予想要学习webpack的小伙伴一个另外的途径.如有不当之处,请大家指出. 看完入门教程系列后,你将会学习到如下内容: 1.如何安装 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- 博客使用BOS上传图片
1.博客平台的选定 从大学开始做个人主页算起,最开始是使用html,CSSS写简单的页面,后面大学毕业之后接触到了WordPress,就开始用WordPress搭建网站.现在还维护着一个农村网站.ht ...
- 深入浅出JavaScript之闭包(Closure)
闭包(closure)是掌握Javascript从人门到深入一个非常重要的门槛,它是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.下面写下我的学习笔记~ 闭包-无处不 ...
- R abalone data set
#鲍鱼数据集aburl <- 'http://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data' ab ...
- 装饰者模式 Decoration
1.什么是装饰者模式 动态给对象增加功能,从一个对象的外部来给对象添加功能,相当于改变了对象的外观,比用继承的方式更加的灵活.当使用装饰后,从外部系统的角度看,就不再是原来的那个对象了,而是使用一系列 ...
- Web安全开发之验证码设计不当引发的撞库问题
感谢某电商平台安全工程师feiyu跟我一起讨论这个漏洞的修复.以往在安全测试的过程中后台经常存在验证码不失效果造成的撞库问题,甚至在一些银行或者电商的登录与查存页面同样存在这个问题,一旦造成撞库无论对 ...
- NDK开发_笔记0
自谷歌搜索退出中国以来,谷歌对全球第二大市场中国的态度一直保持冷淡.可是北京时间12月8日,谷歌2016开发者大会在北京召开,同时专门针对中国的谷歌开发者网站已经上线:https://develope ...