容器化时代来了

虚拟化技术已经走过了三个时代,没有容器化技术的演进就不会有 Docker 技术的诞生。

(1)物理机时代:多个应用程序可能会跑在一台机器上。

(2)虚拟机时代:一台物理机器安装多个虚拟机(VM),一个虚拟机跑多个程序。

(3)容器化时代:一台物理机安装多个容器实例(container),一个容器跑多个程序。

容器化解决了软件开发过程中一个令人非常头疼的问题,用一段对话描述:

测试人员:你这个功能有问题。

开发人员:我本地是好的啊。

开发人员编写代码,在自己本地环境测试完成后,将代码部署到测试或生产环境中,经常会遇到各种各样的问题。明明本地完美运行的代码为什么部署后出现很多 bug,原因有很多:不同的操作系统、不同的依赖库等,总结一句话就是因为本地环境和远程环境不一致。

容器化技术正好解决了这一关键问题,它将软件程序和运行的基础环境分开。开发人员编码完成后将程序打包到一个容器镜像中,镜像中详细列出了所依赖的环境,在不同的容器中运行标准化的镜像,从根本上解决了环境不一致的问题。

容器化技术的尖刀武器

  • 可移植性:不依赖具体的操作系统或云平台,比如在阿里云或腾讯云直接随意迁移。

  • 占地小:容器只需要其应用程序以及它需要运行的所有容器和库的依赖清单,不需要将所有的依赖库都打包在一起。

  • 共享 bin 和 lib:不同的容器可以共享 bin 和 lib,进一步节省了空间。

Docker 横空出世

2010年一位年轻小伙子在美国旧金山成立了一家名叫【dotCloud】的公司, 开发了 Docker的核心技术,从此开启了容器技术的时代。

后面 dotCloud 公司将自己的容器技术进行了简化和标准化,取名为 Docker,就是大家熟悉的鲸鱼 logo。

2013年dotCloud 公司宣布将 Docker 开源,随着越来越多的工程师发现了它的优点, Docker 的人气迅速攀升,成为当时最火爆的开源技术之一。

当前有30%以上的企业在其AWS环境中使用Docker,并且这个数字还在继续增长。

Docker怎么用?

其实大多数人谈论 Docker 时说的是 Docker Engine,这只是一个构建和运行的容器。

在运行容器前需要编写Docker File,通过 dockerFile 生成镜像,然后才能运行 Docker 容器。

Docker File 定义了运行镜像(image)所需的所有内容,包括操作系统和软件安装位置。一般情况下都不需要从头开始编写 Docker File,在 Docker Hub 中有来自世界各地的工程师编写好的镜像,你可以基于此修改。

编排系统的需求催生 k8s

尽管Docker为容器化的应用程序提供了开放标准,但随着容器越来越多出现了一系列新问题:

  • 如何协调和调度这些容器?
  • 如何在升级应用程序时不会中断服务?
  • 如何监视应用程序的运行状况?
  • 如何批量重新启动容器里的程序?

解决这些问题需要容器编排技术,可以将众多机器抽象,对外呈现出一台超大机器。现在业界比较流行的有:k8s、Mesos、Docker Swarm。

在业务发展初期只有几个微服务,这时用 Docker 就足够了,但随着业务规模逐渐扩大,容器越来越多,运维人员的工作越来越复杂,这个时候就需要编排系统解救opers。

一个成熟的容器编排系统需要具备以下能力:

  • 处理大量的容器和用户

  • 负载均衡

  • 鉴权和安全性

  • 管理服务通信

  • 多平台部署

k8s与Docker Swarm江湖恩怨

如果你非要拿 Docker 和 k8s 进行比较,其实你更应该拿 Docker Swarm 和 k8s 比较。

Docker Swarm 是 Docker 自家针对集群化部署管理的解决方案,优点很明显,可以更紧密集成到 Docker 生态系统中。

虽说 Swarm 是 Docker 亲儿子,但依旧没有 k8s 流行,不流行很大程度是因为商业、生态的原因,不多解释。

k8s是做什么用的?

K8s是Google研发的容器协调器,已捐赠给CNCF,现已开源。

Google 利用在容器管理多年的经验和专业知识推出了 k8s,主要用于自动化部署应用程序容器,可以支持众多容器化工具包括现在非常流行的Docker。

目前k8s 是容器编排市场的领导者,开源并公布了一系列标准化方法,主流的公有云平台都宣布支持。

一流的厂商都在抢占标准的制高点,一堆小厂商跟着一起玩,这就叫生态了。国内的大厂商都在干嘛呢?抢社区团购市场,玩资本游戏,哎?!

K8s 架构和组件

k8s 由众多组件组成,组件间通过 API 互相通信,归纳起来主要分为三个部分:

  • controller manager

  • nodes

  • pods

  • Controller Manager,即控制平面,用于调度程序以及节点状态检测。

  • Nodes,构成了Kubernetes集群的集体计算能力,实际部署容器运行的地方。

  • Pods,Kubernetes集群中资源的最小单位。

Docker与k8s 难舍难分

Docker 和 k8s 在业界非常流行,都已经是事实上的标准。

Docker 是用于构建、分发、运行容器的平台和工具。

而 k8s 实际上是一个使用 Docker 容器进行编排的系统,主要围绕 pods 进行工作。Pods 是 k8s 生态中最小的调度单位,可以包含一个或多个容器。

Docker 和 k8s 是根本上不同的技术,两者可以很好的协同工作。

开发实践,灵魂追问

(1)没有 k8s 可以使用 docker 吗?

可以。实际上一些小型公司,在业务不太复杂的情况下都是直接使用 Docker。尽管 k8s 有很多好处,但是众所周知它非常复杂,业务比较简单可以放弃使用 k8s。

(2)没有 Docker 可以使用 k8s 吗?

k8s 只是一个容器编排器,没有容器拿什么编排?!

k8s 经常与 Docker 进行搭配使用,但是也可以使用其他容器,如RunC、Containerted 等。

(3)Docker Swarm 和 k8s 怎么选?

选 k8s。2019年底Docker Enterprise已经出售给Mirantis,Mirantis声明要逐步淘汰Docker Swarm,后续会将 k8s 作为默认编排工具。

总结

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。

送大家一份资料,戳这里免费领取

Mybatis源码解析

员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。

送大家一份资料,戳这里免费领取

Mybatis源码解析

[外链图片转存中…(img-HL7upMur-1624510252540)]

java基础教程第三版耿祥义电子档,统统都会!相关推荐

  1. java基础教程第三版耿祥义,后台开发JAVA岗

    Java虚拟机内存模型 Java虚拟机内存模型中定义的访问操作与物理计算机处理的基本一致! Java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,而每个 ...

  2. java面向对象程序设计第三版耿祥义pdf_java基础知识干货——封装

    很多java初学者,在学到Java面向对象方面的知识点的时候,会觉得这块的知识点真的蛮绕的,一个知识点一个知识点的往外冒,对于初学者来说区分构造器和方法就花费了一整天的时间.现在小编带大家重新过一遍知 ...

  3. 《JSP实用教程(第2版)/耿祥义》错误之“发呆”时间

    关于会话失效的问题,该书用了一个形象的"发呆"时间,但这个词虽然形象,但是存在理解错误.根据几段例子代码来看,书中描述的"发呆"时间是用户无动作失效时间.但是& ...

  4. python程序实例教程基础-python基础教程第三版源代码

    [实例简介] python基础教程第三版源代码 python基础教程第三版源代码 [实例截图] [核心代码] Beginning_Python_version3_SourceCode └── Begi ...

  5. python基础教程pdf-python基础教程第三版.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython python基础教程第三版.pdf689页 本文档 ...

  6. python基本代码教程-python基础教程第三版源代码

    [实例简介] python基础教程第三版源代码 python基础教程第三版源代码 [实例截图] [核心代码] Beginning_Python_version3_SourceCode └── Begi ...

  7. python基础教程第三版电子版百度云-《python基础教程第三版》高清版PDF免费下载...

    下载地址1:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 <python基础教程第三版>高清版 ...

  8. python基础教程第三版电子版-《python基础教程第三版》PDF高清完整版-免费下载...

    <python基础教程第3版>高清PDF下载地址:http://t.cn/EGxO1sW Python基础教程 第3版Python简明教程书籍 Python编程从入门到实践 灵程序设计丛书 ...

  9. python基础教程第三版-《Python基础教程第三版》原版中英文PDF+代码+袁国忠(译)...

    <Python基础教程第3版>整本书的结构安排还是比较明显的.先是基础知识和python的基本数据类型和语言特性介绍,然后是面向对象的编程.之后介绍python的标准库以及相关主题的编程( ...

最新文章

  1. spcontent------spcollection.add(field)
  2. 前端框架Bootstrap 教程
  3. git checkout 命令详解—— Git 学习笔记 16
  4. SQLyog连接虚拟机中mysql8.0详解,2003、1130、2058错误码解决
  5. sqlserver 库服务器导数据
  6. .NET 云原生架构师训练营(模块二 基础巩固 日志)--学习笔记
  7. MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes
  8. 大数据入门第二十天——scala入门(二)scala基础02
  9. 尾调用优化 java_基于Java8函数式编程求一个List的全部子集|尾调用优化解决递归性能问题...
  10. php curl post登录与带cookie模拟登录随笔
  11. vector 赋值_从零开始学习R语言(一)——数据结构之“向量”(Vector)
  12. python爬淘宝评论源代码_python3爬取淘宝信息代码分析
  13. mimo雷达虚拟阵列matlab,基于Matlab的雷达阵列天线信号的波达方向估计
  14. 16中国App年度排行榜及17年趋势预测
  15. FFMPEG音视频解码流程MP4音视频文件流读取(转)
  16. 华为+android+root权限获取root,华为emui5.0系统如何root?华为荣耀v8 emui5.0获取7.0系统的root权限方法...
  17. 陆金所杨晓军:金融与区块链结合将…
  18. 用Squid和DNSPod打造自己的CDN详细教程
  19. 如何写好产品需求文档PRD
  20. 视频画面显示单位fps与Hz的区别

热门文章

  1. 蛛网模型价格预测的一种思路
  2. 魔兽服务器队列位置为什么波动,《魔兽世界》怀旧服:炸团的原因找到了,解决排队问题还会远吗?...
  3. 巧用CSS3之进击的青豆
  4. 小米12的技术创新之一竟是散热系统,或反映骁龙8G1发热问题
  5. Elasticsearch配置jieba分词分析器
  6. 业务扩张几十倍,运维却只有三人,这家企业是怎么做到的?
  7. 10大机器视觉和AI模型库
  8. 发票查询API助力“两票制”实施
  9. 外行人讲讲B2C、S2B2C、B2B2C是什么东东
  10. 【论文 CCF C】An adaptive portfolio trading system