容器化时代来了

虚拟化技术已经走过了三个时代,没有容器化技术的演进就不会有 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 是根本上不同的技术,两者可以很好的协同工作。

总结

对于面试还是要好好准备的,尤其是有些问题还是很容易挖坑的,例如你为什么离开现在的公司(你当然不应该抱怨现在的公司有哪些不好的地方,更多的应该表明自己想要寻找更好的发展机会,自己的一些现实因素,比如对于我而言是现在应聘的公司离自己的家更近,又或者是自己工作到达了迷茫期,想跳出迷茫期等等)

需要面试题以及项目大纲的朋友点赞+收藏后,点击这里免费获取!诚意满满!!

Java面试精选题、架构实战文档:传送门

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

s://gitee.com/vip204888/java-p7)获取!诚意满满!!**

Java面试精选题、架构实战文档:传送门

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!

java程序设计案例教程答案,2年以上经验必看相关推荐

  1. python3程序设计基础答案刘德山_北京大学出版社《Java程序设计案例教程》答案【python程序设计案例教程微课版答案】...

    北京大学出版社<Java程序设计案例教程>答案 哎,我也在找不过时北京交通大学出版的 求大学python3程序设计基础答案 刘德山主编 网上找不到 希望大家帮帮忙 答案我也没有,如果你是计 ...

  2. java程序设计简明教程答案张晓龙_java2简明教程部分课后复习题答案

    JAVA2 简明教程习题答案 第二章 课堂习题 : public class Main { public static void main(String[] args) { //initializat ...

  3. java程序设计案例教程 钱银中_《Java程序设计案例教程》【价格 目录 书评 正版】_中国图书网...

    出版说明 前言 第1章 概述 1.1 Java语言的发展历史 1.2 Java语言的特点 1.3 Java虚拟机 1.4 Java的应用 1.5 Java开发环境的建立 1.6 编辑.编译和运行Jav ...

  4. java基础案例教程答案,2021最新版!

    一面 1.你觉得项目中用了MQ给你带了什么好处,设计初衷是什么?会带来什么缺点嘛? (项目针对性比较强,不细说) 2.在网页键入taobao.com,到返回一个页面,这期间都发生了什么? 3.你说到了 ...

  5. java程序设计实用教程答案_Java程序设计实用教程(课本习题解答).doc

    习 题 1 1.James Gosling 2. 2) 使用Java编译器(javac.exe)编译源文件,得到字节码文件. 使用java解释器(java.exe)来解释执行字节码文件. .对于Win ...

  6. java程序设计高级教程答案_Java高级程序设计实战教程答案

    [简答题]如何决定选用 HashMap 还是 TreeMap ? [单选题]下面说法不正确的是 ______ . [简答题]请简述类编写规范. [简答题]遍历一个 List 有哪些不同的方式? [填空 ...

  7. java程序设计实践教程答案潘浩主编_JAVA程序设计上机指导与习题选解

    第1章 Java编程环境 1.1 JDK的安装与配置 1.2 Java程序的编辑.编译和运行 1.3 制作JAR文件包 1.4 上机实验 习题 第2章 Java基本数据类型 2.1 Java基本数据类 ...

  8. c语言教程的辅导书,清华大学出版社-图书详情-《C语言程序设计案例教程学习辅导》...

    01C语言是国内广泛使用的计算机语言,是很多高等学校计算机及相关专业的核心课程,以及其他理工科专业的计算机通识基础课程.于延.周国辉主编的<C语言程序设计案例教程>(清华大学出版社出版)采 ...

  9. java程序设计实用教程高飞pdf_普通高等教育“计算机类专业”规划教材:Java程序设计实用教程习题集 pdf epub mobi txt 下载...

    普通高等教育"计算机类专业"规划教材:Java程序设计实用教程习题集 pdf epub mobi txt 下载 图书介绍 ☆☆☆☆☆ 高飞,赵小敏,陆佳炜 等 著 下载链接在页面底 ...

最新文章

  1. File.separator
  2. Android - 网络基础
  3. python虚拟cpu性能_python实现可视化动态CPU性能监控
  4. 使用Spring发送带附件的电子邮件(站内和站外传送)
  5. mplayer安装记录 源码分析
  6. 关于z-index的一些问题
  7. canvas生成二维码(2)
  8. [转] polymorphic databinding solutions
  9. 用户是如何浏览你的网站的
  10. Windows下 Nginx日志文件按计划时间自动分割、手动备份
  11. 同步升压与异步升压_单相220V转三相380V升压变频器
  12. C++的商品管理系统
  13. BCD码:8421码
  14. springboot整合jpa之Specification
  15. 国美易卡利用数据挖掘技术,国美易卡精准分析决策
  16. 2018-11-5-win10-uwp-异步转同步
  17. ELK高级搜索四之Mapping映射和分词器
  18. (※)中序遍历二叉树的非递归算法
  19. 【Android】Android Studio左侧的目录工具栏
  20. LightGBM 原理、代码最全解读!

热门文章

  1. 计算机视觉术语,计算机视觉常用术语中英文对照.doc
  2. 计算机视觉工具、代码合集
  3. 《JAVA高并发编程详解》-七种单例模式
  4. 实习心得体会之JDBC操作21090712
  5. PYNQ2之ZYNQ的PS读写DDR
  6. VSPD软件发送与串口线发送区别
  7. 测绘资质对企业单位的作用和影响
  8. Vue学习杂记(八)——SPA模式和前端路由
  9. 二级分类 php 两张表,PHP_php smarty 二级分类代码和模版循环例子,二级分类的数据表结构如下: - phpStudy...
  10. 苹果考虑推迟发布5G iPhone