『 云原生·分布式』分布式基础——虚拟机与Docker容器
系列文章目录
本系列主要分为以下六大部分,正在更新中,尽请期待!
- 『 云原生·生之门』总览云原生带你从-1到1
- 『 云原生·分布式』云原生前置知识
- 『 云原生·分布式』分布式基础
- 『 云原生·微服务』Docker应用
- 『 云原生·微服务』Nginx
- 『 云原生·微服务』消息队列RabbitMQ
提示:已经更新的或正在更新的文章前面打勾了哈!
文章目录
- 系列文章目录
- 前言
- 一、什么是虚拟机?
- 二、什么是容器?
- 1.容器的作用
- 2.容器的组成
- 三、容器与虚拟机的比较
- 四、为什么要用容器?
- 总结
前言
什么是虚拟化?
“在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用比原本的组态更好的方式来应用这些资源。”
虚拟机和容器都用到了虚拟化
一、什么是虚拟机?
虚拟机(VM)是计算机系统的仿真。
详细来说虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
通过虚拟机,我们可以在一台物理计算机上模拟多台虚拟计算机,这些虚拟计算机所拥有的功能与我们的物理计算机无异。
我们常见的虚拟机软件有:VMware
、Oracle VM VirtualBox
、VMware Fusion
等等
二、什么是容器?
容器类似于一个轻量级的沙箱,利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。
1.容器的作用
容器使应用程序可以在任何环境下以相同的方式运行。
举个例子:
假如在很久很久以后发明了便携式的房子,那么
- 容器构建:在未来,你只需要将房子的场景构建好,装在一个小胶囊里
- 容器运输:随身携带着房子等,非常方便
- 容器运行:只需要你轻轻按一下胶囊,找个合适的地方一放,就可以居住了
2.容器的组成
- 应用程序本身
- 应用程序需要的一些依赖
三、容器与虚拟机的比较
相同点:
- 两者都是为应用提供封装和隔离
不同点:
- 进程级资源隔离:容器在主机操作系统的用户空间中运行,与操作系统的其他进程隔离。
- 操作系统级资源隔离:传统的虚拟化技术(如:VMWare等),会创建完整的虚拟机,要运行应用程序,除了部署应用和依赖以外,还要安装整个操作系统。
虚拟化方式不同:
四、为什么要用容器?
现在越来越多人开始使用容器技术那么就说明容器为我们带来了便利或者说容器为我们解决了很多问题,那么容器为我们解决了什么问题呢?
简单的答案:容器使软件具备了强大的移值能力。
以前几乎所有的应用都采用三层结构,系统部署到有限的几台物理服务器上。
到现在我们开发应用使用到的技术越来越多了,开发人员使用消息队列(MQ)、缓存(Cache)、数据库(DB)等多种服务构建和组装应用,并且应用有时需要部署到虚拟服务器、私有云、公有云等不同的环境。
这样看来我们有限的物理服务器显然不够用了,或者说一点也不便利!
根据上面的问题,引入了运输业的集装箱的思想。
集装箱思想:任何货物都分类放到各自的集装箱中,集装箱在整个运输过程中都是密封的,只有到达最终目的地才被打开。
容器技术将集装箱的思想运用到软件打包上,为代码提供了一个基于容器的标准化运输系统。
那么容器技术有哪些优势呢?
对于开发人员:
- 容器有着隔离性和可复用性,开发人员只需为应用创建一次运行环境,之后打包成容器就可以在其他环境下运行。同时容器和所在的主机环境是隔离的,和虚拟机一样,但是比虚拟机更快更方便。
对于运维人员:
- 运维人员只需配置好标准运行环境,服务器就可以运行任何容器。
看看本专栏文章有哪些吧!
本系列文章目录:
- 『 云原生·云之生』总览云原生带你从-1到1
- 『 云原生·分布式』云原生前置知识
- 『 云原生·分布式』分布式基础
- 『 云原生·微服务』Docker应用
- 『 云原生·微服务』Nginx
- 『 云原生·微服务』消息队列RabbitMQ
可以看出来本系列文章将会带你从-1到1的学习云原生的,一起加油吧!
总结
- 容器使软件具备了强大的移值能力
- 容器技术将集装箱的思想运用到软件打包上,为代码提供了一个基于容器的标准化运输系统。