Docker(1)- 什么是 Docker

如果你还想从头学起 Docker,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1690628.html

 

备注

这里的概念直接引用官方的,咱们提取关键字信息来熟记即可

 

学习 Docker 前的必备知识 环境配置的烦恼

软件开发最大的麻烦事之一,就是环境配置

相信每位编程初学者都会在环境配置上倒腾很久,而作为老师也会因为不同机器出现五花八门的环境配置问题而烦恼

想要软件正常运行,那么系统的设置和各种库、组件正确的安装才能如期运行

举例来说,安装一个 Python 应用,计算机必须有 Python 引擎,还必须有各种依赖,可能还要配置环境变量

当你需要换机器的时候,你之前所配置的环境又要重头来一遍,非常麻烦

 

很久以前的应用部署方式 介绍

Docker(1)- 什么是 Docker

在一个物理服务器上面安装系统,直接部署应用

 

缺点

部署非常慢

成本非常高

资源浪费:部署的应用并不会占满服务器资源,会有大部分的空闲资源

难于迁移和扩展:像上面说到的,换台服务器,环境又要重新配

可能会被限定硬件厂商:底层系统架构不同

 

虚拟化技术出现后的应用部署方式 虚拟化介绍

Docker(1)- 什么是 Docker

一个主机部署多个虚拟机,每个虚拟机可以部署多个应用

比如在 Windows 系统里面运行 Linux 系统的 VM

对于底层系统(主机)来说,虚拟机就是一个普通文件,不需要就删掉,对主机没有影响

 

虚拟化优点

资源池:一个物理机的资源分配到了不同的虚拟机

易扩展:添加物理主机或虚拟机

易云化:阿里云、AWS 提供虚拟化技术

 

虚拟化局限性

资源占用多:每一个虚拟机都是一个完整的操作系统,要给其分配资源,当虚拟机数量增多时,物理主机本身消耗的资源势必增多

冗余步骤多:虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登录

启动慢:启动操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,应用程序才能真正运行

 

容器的基础知识 容器为什么会出现

上面也讲述了单机部署应用和虚拟机技术的局限性

容器的诞生就是为了解决这些局限性的

 

什么是容器

对应用软件和其依赖的包进行标准化打包

应用之间相互隔离

共享同一个 OSKernel

可以运行在很多主流操作系统上

可以理解成:标准化软件单元

 

容器解决了什么问题 

解决了开发和运维之间的矛盾

在开发和运维之间搭建了一个桥梁,是实现 devops 的最佳解决方案

 

容器和虚拟机的区别

Docker(1)- 什么是 Docker

容器和虚拟机都具有相似的资源隔离和分配特点,但是功能不同,因为容器虚拟化了操作系统,而不是硬件,所以更加便携和高效

容器   VM  
应用程序层的抽象,将代码和依赖项打包在一起【容器是应用层面的隔离】   将一台服务器转变为多台服务器的物理硬件的抽象【虚拟化是物理资源层面的隔离】  

多个容器可以在同一台计算机上运行,并与其他容器共享OS内核

  也允许多个VM在单台计算机上运行,但需要启动单独的虚拟机 OS  

仅有一个物理机的OS,多个容器共享物理机的资源

  多个OS(物理机一个OS,每个 VM 一个 OS),均独享资源  
一台物理机可以运行数个容器   一台物理机最多可以运行十来个虚拟机  
容器镜像的大小通常为几十 MB   包含操作系统、二进制文件、库,至少也要几个 GB  
可以在数秒内完成启动   和物理机启动时间一样慢,可能要几分钟  
可以处理更多的应用程序,消耗的资源比 VM 少      
每个容器在用户空间中作为隔离的进程运行      

 

虚拟化 + 容器

其实就是 一台物理机上部署多个 VM,每个 VM 上又可以有多个容器

容器和 VM 一起结合使用,在部署和管理应用程序时提供了很大的灵活性

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywsdf.html