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体积小、启动速度快、性能好:虚拟机体积大、启动速度慢、性能一般
相关推荐
f***24113 小时前
高效自动化管理临时文件的技术方案
运维·自动化
m0_738120723 小时前
应急响应——知攻善防靶场Linux-1详细应急过程
linux·运维·服务器·网络·web安全·ssh
青州从事5213 小时前
20260108【mac】【brew】【docker】安装
macos·docker·eureka
obboda3 小时前
磁盘管理(MBR、LVM)
运维·5g
kylezhao20194 小时前
S7-1200 CPU 与 S7-200 SMART S7通信(S7-1200 作为服务器)
运维·服务器
Fortune_yangyang4 小时前
Kubernetes 操作管理
云原生·容器·kubernetes
摸鱼仙人~4 小时前
大模型文章生成的风格个性化与多文体写作:一套可落地的方法论
linux·运维·服务器
xybDIY4 小时前
亚马逊云 Organizations 组织 Link 账号关联与解绑自动化解决方案
运维·自动化·云计算·aws
慕容雪_4 小时前
运维笔记-网络【属性】-【共享】中没有【家庭网络连接(H)】的选项
运维·网络·共享
AC赳赳老秦5 小时前
Shell 脚本批量生成:DeepSeek 辅助编写服务器运维自动化指令
运维·服务器·前端·vue.js·数据分析·自动化·deepseek