当前位置: 首页 > news >正文

『 云原生·分布式』分布式基础——虚拟机与Docker容器

系列文章目录

本系列主要分为以下六大部分,正在更新中,尽请期待!

  • 『 云原生·生之门』总览云原生带你从-1到1
  • 『 云原生·分布式』云原生前置知识
  • 『 云原生·分布式』分布式基础
  • 『 云原生·微服务』Docker应用
  • 『 云原生·微服务』Nginx
  • 『 云原生·微服务』消息队列RabbitMQ

提示:已经更新的或正在更新的文章前面打勾了哈!

文章目录

  • 系列文章目录
  • 前言
  • 一、什么是虚拟机?
  • 二、什么是容器?
    • 1.容器的作用
    • 2.容器的组成
  • 三、容器与虚拟机的比较
  • 四、为什么要用容器?
  • 总结


前言

什么是虚拟化?

“在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用比原本的组态更好的方式来应用这些资源。”

虚拟机和容器都用到了虚拟化

一、什么是虚拟机?

虚拟机(VM)是计算机系统的仿真。

详细来说虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

通过虚拟机,我们可以在一台物理计算机上模拟多台虚拟计算机,这些虚拟计算机所拥有的功能与我们的物理计算机无异。

我们常见的虚拟机软件有:VMwareOracle VM VirtualBoxVMware Fusion等等

二、什么是容器?

容器类似于一个轻量级的沙箱,利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。

1.容器的作用

容器使应用程序可以在任何环境下以相同的方式运行。

举个例子:

假如在很久很久以后发明了便携式的房子,那么

  • 容器构建:在未来,你只需要将房子的场景构建好,装在一个小胶囊里
  • 容器运输:随身携带着房子等,非常方便
  • 容器运行:只需要你轻轻按一下胶囊,找个合适的地方一放,就可以居住了

2.容器的组成

  1. 应用程序本身
  2. 应用程序需要的一些依赖

三、容器与虚拟机的比较

相同点:

  • 两者都是为应用提供封装和隔离

不同点:

  • 进程级资源隔离:容器在主机操作系统的用户空间中运行,与操作系统的其他进程隔离。
  • 操作系统级资源隔离:传统的虚拟化技术(如:VMWare等),会创建完整的虚拟机,要运行应用程序,除了部署应用和依赖以外,还要安装整个操作系统。

在这里插入图片描述

虚拟化方式不同:
在这里插入图片描述

四、为什么要用容器?

现在越来越多人开始使用容器技术那么就说明容器为我们带来了便利或者说容器为我们解决了很多问题,那么容器为我们解决了什么问题呢?

简单的答案:容器使软件具备了强大的移值能力

以前几乎所有的应用都采用三层结构,系统部署到有限的几台物理服务器上。
在这里插入图片描述
到现在我们开发应用使用到的技术越来越多了,开发人员使用消息队列(MQ)、缓存(Cache)、数据库(DB)等多种服务构建和组装应用,并且应用有时需要部署到虚拟服务器、私有云、公有云等不同的环境。

这样看来我们有限的物理服务器显然不够用了,或者说一点也不便利!

根据上面的问题,引入了运输业的集装箱的思想。

集装箱思想:任何货物都分类放到各自的集装箱中,集装箱在整个运输过程中都是密封的,只有到达最终目的地才被打开。

容器技术将集装箱的思想运用到软件打包上,为代码提供了一个基于容器的标准化运输系统。

那么容器技术有哪些优势呢?

对于开发人员:

  • 容器有着隔离性和可复用性,开发人员只需为应用创建一次运行环境,之后打包成容器就可以在其他环境下运行。同时容器和所在的主机环境是隔离的,和虚拟机一样,但是比虚拟机更快更方便。

对于运维人员:

  • 运维人员只需配置好标准运行环境,服务器就可以运行任何容器。

看看本专栏文章有哪些吧!

本系列文章目录:

  • 『 云原生·云之生』总览云原生带你从-1到1
  • 『 云原生·分布式』云原生前置知识
  • 『 云原生·分布式』分布式基础
  • 『 云原生·微服务』Docker应用
  • 『 云原生·微服务』Nginx
  • 『 云原生·微服务』消息队列RabbitMQ

可以看出来本系列文章将会带你从-1到1的学习云原生的,一起加油吧!

总结

  • 容器使软件具备了强大的移值能力
  • 容器技术将集装箱的思想运用到软件打包上,为代码提供了一个基于容器的标准化运输系统。

相关文章:

  • docker镜像编译与docker-compose部署与编排
  • Spring事务底层源码剖析
  • 《WEB安全渗透测试》(31)BeEF-XSS一款红队XSS神器
  • 【优化组合】基于遗传算法求解不同投资比例的收益附matlab代码
  • 什么是JavaScript(快速入门)
  • 树莓派PICO入门教程
  • 深入理解计算机系统——第五章 Optimizing Program Performance
  • 【JDBC实战】水果库存系统 [设计阶段]
  • 【前端之旅】JavaScript进阶笔记
  • JVM运行时参数
  • 【Android】-- 数据存储(二)(存储卡上读写文件、Application保存数据)
  • 消息队列|RabbitMQ入门概述
  • 并发(5)线程之间的协作
  • Vue 新手期练手出现问题记录与解决方案——Vue练手项目“小问题“,强迫症患者福音——持续更新ing
  • 公钥密码学中的简单数学基础
  • “大数据应用场景”之隔壁老王(连载四)
  • DOM的那些事
  • express如何解决request entity too large问题
  • HTML5新特性总结
  • JavaScript DOM 10 - 滚动
  • JavaScript类型识别
  • Js基础知识(一) - 变量
  • leetcode98. Validate Binary Search Tree
  • tab.js分享及浏览器兼容性问题汇总
  • vue数据传递--我有特殊的实现技巧
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 嵌入式文件系统
  • 巧用 TypeScript (一)
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 实现菜单下拉伸展折叠效果demo
  • 温故知新之javascript面向对象
  • 优秀架构师必须掌握的架构思维
  • 自定义函数
  • scrapy中间件源码分析及常用中间件大全
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (07)Hive——窗口函数详解
  • (NSDate) 时间 (time )比较
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (全注解开发)学习Spring-MVC的第三天
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)UDP基本编程步骤
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案