如果你是一名IT行业的从业者,还没有听说过以上3个词的任何一个,抱歉,你可以改行了;如果你是一名技术人员,无论你是程序员,测试人员,运维工程师还是时髦的DevOps工程师,你还没有运行过docker ps,抱歉,你也可以转行了。

容器 … 伴随着2013发布的开源项目Docker,以迅雷不及掩耳盗铃之势迅速席卷了整个IT行业,一瞬间每个人都在谈论容器,谈论Docker,谈论Kubernetes。但,这一切都不是一瞬间的事情 … …

为什么是Docker?

让我们把时间拉回到1995年,那一年我刚刚进入北京理工大学管理学院,成为了一名大一的新生。虽然是管理学院,但不务正业的自己还是喜欢鼓捣各种电子产品,借着高三假期在中关村打工的机会认识了一些“业内人士”,也在学校里面帮人攒机赚点外块。

当然赚外快就需要关注各种配件行情,所以开始关注各种技术杂志;这个时候开始,在各种电脑类杂志上开始频繁出现一个词汇,就是 Web Service。当时的我还完全看不懂这里面的玄机,而容器的发展应该说从那个时候就已经埋下了伏笔。

在1995年,任何一种技术栈所开发出来的软件都是无法很方便和其他技术栈进行通讯的,除非使用共享内存,文件系统的方式。跨进程访问是一个阻碍技术发展的巨大难题,而对这个难题最不满意的其实是企业的管理者们。因为对于管理者而言,一旦购买了某个厂商的某个技术栈的产品,那么就必须一直“忠实”的与这个厂商合作下去,同时一直使用同样一个技术栈开发后续的扩展。什么意思呢,就是说如果你用Java开发一个系统(注意:这只是个例子,1995年的Java还仅限于applet的状态),你是不可能使用任何其他语言,比如:C#,PHP,Python等,与这个系统进行集成的。这个状态让企业管理者感到非常不可接受,因为他们感觉被绑架了,明明市场上有根好的解决方案,有便宜的开发人员,但仅仅因为技术的限制我就必须和这个厂商合作。

这个问题必须解决!

同时,1995年互联网开始普及,于是科学家们开始研究使用网络通信的方式来解决跨进程访问的问题,这样才出现了Web Service这种借助标记语言(XML)来抽象不同技术栈的实现方式,统一使用简单的纯文本报文的方式来实现跨进程访问的技术。这种方式从那个时候一直在持续被改进,并最终演化成了今天的Rest API的标准。这件事情,到2015的时候已经不再是一个障碍了,你现在可以使用任何语言,在任何系统上和其他语言的系统进行自由高效的通讯。在这个过程中,IT系统架构也随之改变,从原来只能是一个厂商,一个操作系统,一个技术栈的烟囱式架构,逐渐演变成不同厂商,不同技术,不同操作系统的网状架构 … … 其实这就是我们所说的集中式到分布式,单体到微服务的整个演化过程。

这个过程中,企业管理者终于自由了,技术人员也终于自由了,大家不再受限于某种单一的技术,可以自由的选择适合的组件来“拼装”一个IT系统。这件事情同时也和整个开源运动互相推动。现如今,在一个IT系统中引入某种开源组件,或者与一个第三方系统进行集成都不再是一个技术问题。大家变得随意,自由,敏捷起来。

但是,任何事情都有它的两面性。在获取了自由,敏捷的同时,整个IT架构变得无比复杂,开发人员开始组装出高度异构化的系统,而运维环境也开始采用更加复杂的分布式,x86,虚拟化和云来支撑这类异构的系统。

这个时候,企业管理者的另外一个大麻烦又来了,如何管理这复杂的NxN问题?不仅仅技术变得更加复杂,人员知识结构也成为了一个巨大的瓶颈。原来的IT运维人员只需要掌握一个技术栈的知识,而现在每个服务都使用不同的技术栈运行在不同的硬件或者虚拟化平台上。

这个问题也必须解决!

于是,聪明的技术人又一次发挥了充分的想象力,利用容器的方式完美的解决了这个问题。Docker通过统一开发人员打包交付代码的方式,和统一运维人员运行软件包的方式,让开发人员做到“一次构建,多次运行”,让运维人员做到“配置一次,运行任何应用”。

最终,Docker以自己特有的逆向思维模式用最简单的方式解决了这个问题。具体请参考:Docker,容器,虚拟机和红烧肉

如果你对运维自动化工具有所了解,就一定知晓Ansible, Chef, Puppet以及Vagrant等等这些工具。但,如果把Docker和这些工具做比较,你就会发现他们其实解决了同一个问题,但使用了2种完全不同的思路。Docker是用简单的办法解决复杂的问题,而其他那些工具都使用复杂的办法来解决复杂的问题。

到这里,我想我已经解答了前面2个问题,为什么是容器和Docker?

为什么是Kubernetes?

这个问题我想从《2018全球DevOps现状调查报告》中针对云计算发展的这张总结来说明,云计算所需要具备的五个核心特征恐怕大家都了解。但是即便过去这些年各大企业都在风风火火的建设自己的云计算,但其实没有几个企业的所谓云计算具备了这些特征。特别是大多数传统企业所建设的云计算,都是打着云计算的幌子继续卖传统数据中心的狗肉。

即便是已经上了公有云的很多企业,也仍然按照老的方式在使用先进的云计算平台,生生的把公有云用成了库房里面的服务器。

这些问题当然不仅仅是技术问题,还涉及到管理,文化和传统思维方式的问题。但是抛开这些非技术因素不谈,仅仅说技术,如果云计算仅仅能够解决IaaS层的问题,对于企业来说确实很难挖掘出真正的价值,最后也就是个虚拟化数据中心而已。企业业务真正需要的是PaaS层面的东西,但因为上述整个IT行业向异构化发展的趋势,一直没有一个真正的通用化的,可以被企业自己的数据中心玩得起来的PaaS出现。具体问题,可以看看CloudFoundry的发展现状就知道了。

这个时候,恰好Docker出现了,那么对于企业来说,上层对接应用技术栈的问题被完美解决了,还需要一个方案能够完美解决对接底层IaaS云计算基础设施的对接问题。

这个问题也必须被解决。

可以这样说,有了编排平台,你可以在一个混合的云环境上运行任何你想要运行的应用,不用关心技术栈,不用关心操作系统,不用关心哪朵云,也不用关心应用在哪里。你完全可以在Azure上放3个节点,在AWS放3个节点,另外在家里的破旧服务器也放上3个节点来运行你的集群和应用。

编排平台解决了困扰企业管理者上云最大的担忧,就是被厂商绑定,被技术绑定,被操作系统绑定。特别是传统企业的管理者,终于找到了一个成熟的方案可以盘活自己花费巨资建立的"云计算"数据中心,让自己的“云”成为一朵真的云,真正为业务为开发者服务。

Kubernetes就是这样一个技术,它满足了企业管理者们这“最后一公里”的诉求。

一句话总结这满满长路

生命诚可贵,爱情价更高,若为自由故,二者皆可抛 … …

其实,每次聊起这些话题,有一肚子的话可以说。所以这一次,我请来了2位国内对容器,Docker,Kubernetes都非常熟悉,并且对于云计算解决方案,特别是基于微软Azure Stack混合云解决方案非常熟悉的老师来聊一聊关于容器,Docker和Kubernetes的话题。

话题1: Windows 上的 Linux 容器和私有云里面的Kubernetes是怎样玩的?


提起Docker,可能大多数人都不会觉和Windows有什么关系,但是Windows上也是可以运行容器的,而且是可以同时运行Windows和Linux两种操作系统的容器。是不是觉得很诡异?

这一次就请彭爱华(网名:盆盆)老师来为大家刨析一下Windows上支持容器的技术内幕。彭爱华老师自从2014年开始就连任微软最有价值专家,并且著有多本Windows技术内幕的权威书籍。这次盆盆老师将为大家现场演示在Windows上同时运行2种容器,还将演示在Azure Stack中部署Kubernetes的实例环境。这些内容盆盆老师在刚刚结束的微软技术大会和CloudNative的KubeCon大会上都进行过分享,但是因为受限于会场网络环境,都只有视频展示,这一次我们将可以直接观看盆盆老师操作真实的Azure Stack环境完成Kubernetes的部署。还可以直接提问交流哦,想想都过瘾!

话题2: 企业上K8s的那些不得不跨越的门槛

要把Kubernetes真正用起来,其实还是有很高的门槛的,这些是现在困扰大多数企业开发者的难题。Alan Liu老师在帮助企业落地K8s环境方面具有非常丰富的经验,这次也将给大家实地演示使用全托管的Azure Kubernetes Services环境,配合Azure Pipeline流水线,并结合开源的Draft工具来完成基于k8s的DevOps流水线搭建和实战。

DevOps+LIVE直播预告

Windows上的Linux容器和私有云里面的k8s

直播时间:2018年11月21日(周三)晚8点

分享嘉宾


彭爱华

微软最有价值专家 MVP,多本微软技术图书作者,上财商学院客座讲师,上海逆向物流协会特邀专家

Alan Liu

宏富云信息首席架构师,微软最有价值专家 MVP,Study4社区组织者

别急,还有福利


20套3节点Kubernetes集群等你来领


参与直播的小伙伴将有机会抽取由 devcloudX.com (DevOps实验室) 提供的Kubernetes集群1元试用大礼包。

这次我们将在直播现场送出20套3节点Kubernetes集群环境的3天使用权,你只需要注册报名直播就可以一键创建出自己的3节点Kubernetes集群环境,马上体验这个最火热的技术平台。

注册报名二维码


请扫描以下二维码填写表单完成注册

直播链接会在直播开始前通过短信方式发送到您的手机上,请确保您的手机号码正确。

原文地址: https://devopshub.cn/2018/11/16/why-container-docker-kubernetes/


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

为什么是容器,Docker和Kubernetes?相关推荐

  1. 大型网站技术学习-3. 容器Docker与kubernetes

    大型网站技术基石篇-容器Docker与kubernetes Docker和Kubernetes的关系就如Xen与OpenStack. Docker是一种容器技术,和Hypervisor(KVM/Xen ...

  2. 《Docker容器:利用Kubernetes、Flannel、Cockpit和Atomic构建和部署》——2.2 容器式Linux系统的Docker配置...

    本节书摘来自异步社区<Docker容器:利用Kubernetes.Flannel.Cockpit和Atomic构建和部署>一书中的第2章,第2.2节,作者: [美]Christopher ...

  3. 容器、Docker与Kubernetes——Kubernetes的配置入门

    本文讲的是容器.Docker与Kubernetes--Kubernetes的配置入门[编者的话]这是介绍Kubernetes的第三篇,主要集中讲述如何配置Kubernetes集群以及作者在配置过程中遇 ...

  4. 容器编排技术 -- Kubernetes kubectl 与 Docker 命令关系

    容器编排技术 -- Kubernetes kubectl 与 Docker 命令关系 1 docker run 2 docker ps 3 docker attach 4 docker exec 5  ...

  5. Docker 和 Kubernetes 从听过到略懂:给程序员的旋风教程

    早在 Docker 正式发布几个月的时候,LeanCloud 就开始在生产环境大规模使用 Docker,在过去几年里 Docker 的技术栈支撑了我们主要的后端架构.这是一篇写给程序员的 Docker ...

  6. 黑客使用合法工具接管 Docker 和 Kubernetes 平台

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源:云头条 在最近一次攻击中,网络犯罪团伙TeamTN ...

  7. Docker、Kubernetes、Apache Mesos 之争 | 一个与传说不同的故事

    本文讲的是Docker.Kubernetes.Apache Mesos 之争 | 一个与传说不同的故事[编者的话]有无数的文章.讨论和社交网络上的交流在比较 Docker.Kubernetes 和 M ...

  8. Docker与Kubernetes,是敌是友?

    本文讲的是Docker与Kubernetes,是敌是友?[编者的话]本文为读者提供了容器技术平台的组成说明,介绍了Docker公司的历史,编排框架Kubernetes推动Docker容器的使用,容器技 ...

  9. 带你快速了解 Docker 和 Kubernetes

    作者:honghaohu,腾讯 PCG 后台开发工程师 从单机容器化技术 Docker 到分布式容器化架构方案 Kubernetes,当今容器化技术发展盛行.本文面向小白读者,旨在快速带领读者了解 D ...

最新文章

  1. CodeGen CreateFile实用程序
  2. Unity应用架构设计(9)——构建统一的 Repository
  3. wordpress ajax 调用wpdb_莫名其妙的调用Roboto字体又莫名其妙的恢复的过程
  4. 斯坦福助理教授马腾宇:ML非凸优化很难,如何破?
  5. CPU/ABI显示No system images installed for this target的解决方案
  6. 如何解决Android studio已分享到github的项目但是git->commit directory提交不上去
  7. 在Swing和Swt中使用JavaFX
  8. php+new+mysqli+utf+8,MySQL和PHP:utf-8带有西里尔字符
  9. HTML+CSS+JS实现 ❤️酷炫情人节爱心动画特效❤️
  10. 避坑指南:通过expdp/impdp迁移数据的7个坑
  11. 数据迁移-商品数据迁移实践
  12. c 远程登陆linux,Linux C/C++基础——Windows远程登录Linux
  13. AutoCAD2008换硬盘后重新激活
  14. SQL Server不允许保存更改的解决方法
  15. javascript简易的动画效果
  16. Swing中JColorChooser的Abbot单元测试
  17. PB 级数据即席查询基于 Flink 的实践
  18. 相遇恨晚的经典宋词65首
  19. mysql in数量限制_SQL语句中in的个数限制为1000
  20. C# winform 工具箱、控件类型简介表

热门文章

  1. 动态切换父元素隐藏和显示里面的子元素的动画会再一次执行吗?
  2. 限流算法(记录cyc大佬的专栏)
  3. 一个countDown在多线程调度下使用不当的分享
  4. 从shiro源码角度学习工厂方法设计模式
  5. MySQL复制--slave设置读取binlog的位置
  6. 小程序 - 学习笔记
  7. 理解云计算备份与灾难恢复
  8. Git 简单命令行指令
  9. 【转】卖场开设社区便利店,不仅卖货,还有家政服务、售后衔接等(图)
  10. 电热水器和插座之间的相亲故事