Docker与虚拟机之间的区别

文章目录

初始Docker

背景:

我们之前在;linux上安装mysql的会发现这个过程十分的复杂.但这还只是一个mysql.当你想开发大型项目的时候会发现组件较多,运行环境也较为复杂,部署时会碰到一些问题:比如依赖关系复杂,容易出现兼容性问题.开发,测试,生成环境有差异...等等

Docker的出现解决了这个问题
Docker如何解决依赖的兼容问题的?

  • 将应用的Libs(函数库),Deps(依赖),配置与应用一起打包
  • 将每个应用放到一个隔离容器去运行,避免互相干扰

    不同环境的操作系统不同,Docker如何解决? 我们先来了解下操作系统

操作系统的内核与硬件交互,提供操作硬件的指令,但是如果单靠这些简单的指令来开发那是相当难受的,因此开发人员在操作系统内核的基础上加了一个系统应用,这个系统应用封装内核指令为函数,便于程序员开发调用,用户程序也就是基于系统函数库实现功能

例如: UbuntuCentOS 都是基于Linux内核,只是系统应用不同,提供的函数库有差异

回到前面的问题: Docker如何解决不同系统环境的问题?

  • Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
  • Docker运行到不同操作系统时,直接基于打包的库函数,借助与操作系统的Linux内核来运行


Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?

  • Docker允许开发中将应用,依赖,函数库,配置一起打包,形成可移植镜像
  • Docker应用运行在容器中,使用沙箱机制,相互隔离

沙箱机制:沙箱机制,或称沙盒技术,是一种安全技术,用于隔离运行中的程序,以防止程序对计算机系统造成未授权的更改或破坏。沙箱为程序提供了一个受限的执行环境,程序在这个环境中运行,就像孩子在沙盒中玩耍一样,可以自由活动,但不会影响到沙盒外的世界。

Docker如何解决开发,测试,生成环境有差异的问题?

  • Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统内的Linux内核,因此可以在任意Linux操作系统上运行

总结

Docker是一个快速交付应用、运行应用的技术

  1. 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
  2. 运行时利用沙箱机制形成隔离容器,各个应用互不干扰
  3. 启动、移除都可以通过一行命令完成,方便快捷

虚拟机

虚拟机(virtual machine) 是在操作系统中模拟硬件设备,然后运行另一操作系统,比如在Windows系统里面运行Ubuntu系统,这样就可以运行任意的Ubuntu应用了.

区别

虚拟机中运用了Hypervisor这样一个技术模拟了硬件然后再装上另外一个操作系统,启动虚拟机跟开机一样重启操作系统,这个速度显然是不如Docker,因为docker是一个进程.

总结
Docker和虚拟机的差异

  • docker是一个系统进程;虚拟机是在操作系统中的操作系统
  • docker体积小、启动速度快、性能好:虚拟机体积大、启动速度慢、性能一般
相关推荐
刘若水12 分钟前
Linux: 进程信号初识
linux·运维·服务器
小刘爱喇石( ˝ᗢ̈˝ )30 分钟前
玛卡巴卡的k8s知识点问答题(六)
云原生·容器·kubernetes
rider18933 分钟前
【1】搭建k8s集群系列(二进制部署)之系统初始化
云原生·容器·kubernetes
阳小江1 小时前
Docker知识点
运维·docker·容器
极客柒2 小时前
RustDesk 开源远程桌面软件 (支持多端) + 中继服务器伺服器搭建 ( docker版本 ) 安装教程
服务器·docker·开源
只是橘色仍温柔2 小时前
xshell可以ssh连接,但vscode不行
运维·vscode·ssh
IT里的交易员2 小时前
【系统】换硬盘不换系统,使用WIN PE Ghost镜像给电脑无损扩容换硬盘
运维·电脑
共享家95272 小时前
深入剖析Linux常用命令,助力高效操作
linux·运维·服务器
小刘爱喇石( ˝ᗢ̈˝ )2 小时前
玛卡巴卡的k8s知识点问答题(七)
云原生·容器·kubernetes
大刘讲IT3 小时前
制造业数字化转型:流程改造先行还是系统固化数据?基于以MTO和MTS的投资回报分析
运维·经验分享·生活·产品经理·数据可视化