容器并不是一个全新的技术,但这并不妨碍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件事的更多相关文章

  1. 【转载】在IT界取得成功应该知道的10件事

     在IT界取得成功应该知道的10件事 2011-08-11 13:31:30 分类: 项目管理 导读:前面大多数文章都是Jack Wallen写的,这是他的新作,看来要成为NB程序员还要不停的自我总结 ...

  2. (0)开始 Raspberry Pi 项目前需要知道的 10 件事

    https://www.digikey.cn/zh/articles/techzone/2017/feb/10-things-to-know-before-starting-a-raspberry-p ...

  3. 使用Office 365前,企业必须要知道的10件事

    目前的市场上充斥着很多关于微软Office 365的炒作,相信厂商.客户或者企业的都有自己不同的考虑.Office 365是微软云版本的Office,用户可以通过互联网创建一个帐户,付款.下载应用安装 ...

  4. 在IT界取得成功应该知道的10件事

    导读:人人似乎都同意IT行业是一个艰难领域,但怎样才能克服逆境,成为一名成功的IT专业人士呢?下文这些特质应该是关键.此文作者Jack Wallen,他在前段时间写过不少文章讨论IT职场,比如退出IT ...

  5. 关于NoSQL数据库你应该知道的10件事

    关系数据库模型已经流行了几十年了,但是一种新类型的数据库——被称为NoSQL,正在引起企业的注意.下面是关于它的优势和劣势的一个概述.二十多年以来,对数据库管理来说,关系数据库(RDBMS)模型一直是 ...

  6. digitalocean教程:你应该知道的10件事

    DigitalOcean VPS性价比高,全球拥有多处机房,无须备案,非常适合守规矩的中国用户使用.digitalocean优惠码.digitalocean速度.digitalocean评测是网友关心 ...

  7. 关于C#你应该知道的2000件事

    原文 关于C#你应该知道的2000件事 下面列出了迄今为止你应该了解的关于C#博客的2000件事的所有帖子. 帖子总数= 1,219 大会 #11 -检查IL使用程序Ildasm.exe d #179 ...

  8. 关于WPF你应该知道的2000件事

    原文 关于WPF你应该知道的2000件事 以下列出了迄今为止为WPF博客所知的2,000件事所创建的所有帖子. 帖子总数= 1,201 动画 #7 - 基于属性的动画 #686 - 使用动画制作图像脉 ...

  9. 《Offer一箩筐》求职之前你必须知道的 4 件事!!

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」. 如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力! Hi~ 这里是 ...

随机推荐

  1. Visaul Studio 常用快捷键的动画演示

    从本篇文章开始,我将会陆续介绍提高 VS 开发效率的文章,欢迎大家补充~ 在进行代码开发的时候,我们往往会频繁的使用键盘.鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以 ...

  2. QT5利用chromium内核与HTML页面交互

    在QT5.4之前,做QT开发浏览器只能选择QWebkit,但是有过使用的都会发现,这个webkit不是出奇的慢,简直是慢的令人发指,Release模式下还行,debug下你就无语了,但是webkit毕 ...

  3. dagger2系列之Scope

    Dagger的Scope注解代表的是作用域,通过实现自定义@Scope注解,标记当前生成对象的使用范围,标识一个类型的注射器只实例化一次,在同一个作用域内,只会生成一个实例, 然后在此作用域内共用一个 ...

  4. AJAX实现登录界面

    使用php跳转界面和AJAX都可实现登录界面的跳转的登录失败对的提醒.但是,php跳转的方式 需要额外加载其他界面,用户体验差.AJAX可实现当前页面只刷新需要的数据,不对当前网页进行 重新加载或者是 ...

  5. Node.js使用PM2的集群将变得更加容易

    介绍 众所周知,Node.js运行在Chrome的JavaScript运行时平台上,我们把该平台优雅地称之为V8引擎.不论是V8引擎,还是之后的Node.js,都是以单线程的方式运行的,因此,在多核心 ...

  6. 手机web如何实现多平台分享

    话说App一般都带有分享到社交平台的入口,web网页的分享也有很不错的框架,但是随着HTML5的不断发展,手机web页面越来越多的进入到我们的生活中,那如何在我们的手机上完成分享呢?话说各大分享平台都 ...

  7. .net core和angular2之前端篇—1

    2016-10-20更新 今天的这篇文章还是一篇"Hello World",只不过开发环境有所改变--Visual Studio Code+Angular2+Webapck,也算是 ...

  8. SqlServer简单数据分页

    手边开发的后端项目一直以来都用的.NET MVC框架,访问数据库使用其自带的EF CodeFirst模式,写存储过程的能力都快退化了 闲来无事,自己写了条分页存储过程,网上类似的文章多的是,这里只列了 ...

  9. Android快乐贪吃蛇游戏实战项目开发教程-05虚拟方向键(四)四个三角形按钮

    该系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html 一.如何判断点击的是哪个方向键按钮 在上篇教程中我们实现了左边的三角形按钮效果, ...

  10. JS案例之3——倒计时

    利用简单的数字累加循环模拟倒计时的效果,逻辑比较简单.如果大牛们有更好的办法欢迎补充. 这种效果经常用于在规定的时间做某件事.比如在1分钟之后重新发送验证码等. 案例演示: 源代码如下: <!D ...