最近docker技术在网络上非常火爆,各种技术下载中心总能看到一个以docker镜像方式下载的下载选项,而当你下载下来运行发现,这就是一个虚拟机嘛。究竟是不是呢?一起来看看。

我们先来看看传统意义上的虚拟机:

  • 基础设施(Infrastructure)。它可以是你的个人电脑,数据中心的服务器,或者是云主机。
  • 主操作系统(Host Operating System)。你的个人电脑之上,运行的可能是MacOS,Windows或者某个Linux发行版。
  • 虚拟机管理系统(Hypervisor)。利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。类型1的Hypervisor有支持MacOS的HyperKit,支持Windows的Hyper-V以及支持Linux的KVM。类型2的Hypervisor有VirtualBox和VMWare。
  • 从操作系统(Guest Operating System)。假设你需要运行3个相互隔离的应用,则需要使用Hypervisor启动3个从操作系统,也就是3个虚拟机。这些虚拟机都非常大,也许有700MB,这就意味着它们将占用2.1GB的磁盘空间。更糟糕的是,它们还会消耗很多CPU和内存。
  • 各种依赖。每一个从操作系统都需要安装许多依赖。如果你的的应用需要连接PostgreSQL的话,则需要安装libpq-dev;如果你使用Ruby的话,应该需要安装gems;如果使用其他编程语言,比如Python或者Node.js,都会需要安装对应的依赖库。
  • 应用。安装依赖之后,就可以在各个从操作系统分别运行应用了,这样各个应用就是相互隔离的。

我们再来看看docker:

  • 基础设施(Infrastructure)。
  • 主操作系统(Host Operating System)。所有主流的Linux发行版都可以运行Docker。对于MacOS和Windows,也有一些办法”运行”Docker。
  • Docker守护进程(Docker Daemon)。Docker守护进程取代了Hypervisor,它是运行在操作系统之上的后台进程,负责管理Docker容器。
  • 各种依赖。对于Docker,应用的所有依赖都打包在Docker镜像中,Docker容器是基于Docker镜像创建的。
  • 应用。应用的源代码与它的依赖都打包在Docker镜像中,不同的应用需要不同的Docker镜像。不同的应用运行在不同的Docker容器中,它们是相互隔离的。

docker与虚拟机的区别:

  Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。

  虽然Docker有很多的优势,但虚拟机技术是有它的应用场景的。虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。而Docker通常用于隔离不同的应用,例如前端,后端以及数据库。

  Docker在宿主机器的操作系统上创建Docker引擎,直接在宿主主机的操作系统上调用硬件资源(cpu、内存等),而不是虚拟化操作系统和硬件资源,所以操作速度快。从某种意义上讲,docker只是虚拟了一套文件系统与真实操作系统隔离开来而已。

转载于:https://www.cnblogs.com/guanghe/p/10249734.html

Docker与虚拟机技术相关推荐

  1. Docker容器化技术

    一.虚拟机与容器的比较 在容器化技术出来之前,使用的是虚拟机技术,虚拟机和Docker容器技术都是一种虚拟化技术 虚拟机包含的是整个操作系统的原生镜像,非常的庞大,而docker的镜像只包含最核心的环 ...

  2. Docker——容器虚拟化技术

    目录 一.Docker介绍 诞生背景 Docker介绍 虚拟机技术与容器虚拟化技术 虚拟机技术 容器虚拟化技术 官方网站 二.Docker安装 安装Docker Docker管理命令 Docker底层 ...

  3. docker容器虚拟化技术_Docker,虚拟机和容器的全面介绍

    docker容器虚拟化技术 by shota jolbordi 通过Shota Jolbordi Docker has been a buzzword for tech people for the ...

  4. 在docker上调用宿主机硬件_Docker精华问答:Docker与虚拟机的区别?| 技术头条

    Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker,可以让应用的部署.测试和分发都变得前所未有的高效和轻松! 1 ...

  5. Docker精华问答:Docker与虚拟机的区别?| 技术头条

    Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker,可以让应用的部署.测试和分发都变得前所未有的高效和轻松! 1 ...

  6. Docker虚拟化容器技术(用在虚拟机上),VirtualBox中linux虚拟机联网的问题

    Docker虚拟化容器技术(用在虚拟机上),VirtualBox中linux虚拟机联网的问题 文章目录 前言:安装Docker,则先安装Linux虚拟机(我的CSDN中有发) 一.要解决在Virtua ...

  7. 什么是容器、什么是docker、docker与虚拟机的对比、docker做什么、运行场景,Docker功能和组件,Docker的C/S模式的运行,Docker概念,相关概念

    1.什么是容器 简单来说容器是一种内核技术的虚拟化体现(Cgroup和Namespace),容器可以在核心CPU上运行本地指令,有效的将单个操作系统进行分组管理和隔离. 2.什么是Docker 一种容 ...

  8. 容器精华问答 | Docker和虚拟机有什么差别?

    戳蓝字"CSDN云计算"关注我们哦! 容器技术是这两年热门的话题,因为容器技术给我们带来了很多方便的地方,节约了不少成本,不管是在运维还是开发上.今天,就让我们来看看关于容器更加有 ...

  9. Docker生产环境技术栈有哪些

    导语   生产环境的Docker设置包括的内容有一些基本的架构组件,这些组件对于运行容器话服务器以及传统服务器集群都是通用的,在很多的时候可以简单认为构建和运行容器的方式与构建和运行虚拟机的方式是一样 ...

最新文章

  1. 从IaaS到SaaS,腾讯二十年自研技术云上集结
  2. iOS使用AVFoundation在视频上添加字幕以及控制字幕时间
  3. 使用Leap Motion Orion开发酷炫的手势识别VR/AR应用
  4. Spring5源码 - 14 如何在所有Bean创建完后做扩展?
  5. 无障碍开发(五)之设置获取无障碍属性值
  6. 我与C++的不解情缘
  7. android 简单json,Android JSON数据简单处理
  8. ajax中加入if,如何添加if语句到Ajax
  9. Flask运行时Unicode编码错误
  10. 小米 信号测试软件,如何测试出本地的联通、电信、移动信号网络的强弱?
  11. 统计遗传学:第五章,多基因评分PGS
  12. 淘宝数据分析实战:热销美食爬取和分析
  13. NetFlow基础:网络流量监控简介
  14. SQLSERVER2008 18456错误
  15. 小红书商品详情API接口(商品详情页面数据接口)
  16. 马云点了人类史上最贵“外卖”,又一场“三国杀”即将来临?
  17. 【java】-XX:-OmitStackTraceInFastThrow只有空指针,没有堆栈信息
  18. 定时脚本任务列子(crontab)
  19. 激光物理学取得突破,三大物理学家共获诺贝尔奖
  20. android n模拟器,Android N预览模拟器崩溃

热门文章

  1. ASP.NET Core:使用IdentityServer构建可靠的身份验证和授权系统
  2. 甲骨文通知用户需付费取得 Java 8 更新
  3. 张杰和机器人_科学艺术两开花,国内首个机器人乐队诞生有什么重要的意义?...
  4. 计算机常见故障报警,常见听报警志与故障
  5. 大学物理光学思维导图_头晕/眩晕问诊最全思维导图,赶紧收藏!
  6. python爬虫网页数据案例_python+vue实现网站爬虫数据分析案例
  7. 计算两个经纬度的距离_HTML5 地理定位+地图 API:计算用户到商家的距离
  8. php代理请求失败,http请求失败有哪些原因
  9. jenkins修改pom文件_从Jenkins中的pom文件自动派生强制性SonarQube属性
  10. 426rmb to php,PHP 转换数字为大写人民币之二