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体积小、启动速度快、性能好:虚拟机体积大、启动速度慢、性能一般
相关推荐
小诸葛的博客1 小时前
详解Linux中的定时任务管理工具crond
linux·运维·chrome
一默19911 小时前
CentOS 7.9升级OpenSSH到9.9p2
linux·运维·centos
BranH2 小时前
Linux系统中命令设定临时IP
linux·运维·服务器
极小狐2 小时前
极狐GitLab 项目功能和权限解读
运维·git·安全·gitlab·极狐gitlab
宁酱醇2 小时前
GitLab_密钥生成(SSH-key)
运维·ssh·gitlab
秋风起,再归来~2 小时前
【Linux庖丁解牛】—进程优先级!
linux·运维·服务器
诡异森林。2 小时前
Docker--Docker网络原理
网络·docker·容器
Lalolander3 小时前
设备制造行业如何避免项目管理混乱?
运维·制造·工程项目管理·四算一控·epc·环保设备工程·设备制造
ALex_zry3 小时前
Docker Macvlan网络配置实战:解决“network already exists“错误
网络·docker·php
IT小辉同学3 小时前
Docker如何更换镜像源提高拉取速度
spring cloud·docker·eureka