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体积小、启动速度快、性能好:虚拟机体积大、启动速度慢、性能一般
相关推荐
chenbin52010 分钟前
Jenkins 自动构建Job
运维·jenkins
java 凯12 分钟前
Jenkins插件管理切换国内源地址
运维·jenkins
xidianjiapei00113 分钟前
Kubernetes的Ingress 资源是什么?
云原生·容器·kubernetes
AI服务老曹15 分钟前
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
运维·人工智能·安全·开源·音视频
sszdzq2 小时前
Docker
运维·docker·容器
book01212 小时前
MySql数据库运维学习笔记
运维·数据库·mysql
dmy2 小时前
docker 快速构建开发环境
后端·docker·容器
bugtraq20213 小时前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu
xmweisi3 小时前
【华为】报文统计的技术NetStream
运维·服务器·网络·华为认证
VVVVWeiYee3 小时前
BGP配置华为——路径优选验证
运维·网络·华为·信息与通信