容器并不是一个全新的技术,但这并不妨碍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. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  2. 用dubbo时遇到的一个序列化的坑

    首先,这是标题党,问题并不是出现在序列化上,这是报错的一部分: Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to s ...

  3. Partition:Partiton Scheme是否指定Next Used?

    在SQL Server中,为Partition Scheme多次指定Next Used,不会出错,最后一次指定的FileGroup是Partition Scheme的Next Used,建议,在执行P ...

  4. Xshell 连接CentOS服务器解密

    平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html Xshell生成密钥key(用于Linux 免密码登录)htt ...

  5. ElasticSearch 5学习(10)——结构化查询(包括新特性)

    之前我们所有的查询都属于命令行查询,但是不利于复杂的查询,而且一般在项目开发中不使用命令行查询方式,只有在调试测试时使用简单命令行查询,但是,如果想要善用搜索,我们必须使用请求体查询(request ...

  6. ShenNiu.MVC管理系统

    本篇将要和大家分享的是一个简单的后台管理系统,这里先发个地址http://www.lovexins.com:8081/(登陆账号:youke,密码:123123:高级用户账号:gaoji,密码:123 ...

  7. 【iOS】Xcode8+Swift3 纯代码模式实现 UICollectionView

    开发环境 macOS Sierra 10.12.Xcode 8.0,如下图所示: 总体思路 1.建立空白的storyboard用于呈现列表 2.实现自定义单个单元格(继承自:UICollectionV ...

  8. iOS 委托与文本输入(内容根据iOS编程编写)

    文本框(UITextField) 本章节继续编辑 JXHypnoNerd .文件地址 . 首先我们继续编辑  JXHypnosisViewController.m 修改  loadView 方法,向  ...

  9. WPF中Grid实现网格,表格样式通用类

    /// <summary> /// 给Grid添加边框线 /// </summary> /// <param name="grid"></ ...

  10. Android—自定义开关按钮实现

    我们在应用中经常看到一些选择开关状态的配置文件,做项目的时候用的是android的Switch控件,但是感觉好丑的样子………… 个人认为还是自定义的比较好,先上个效果图: