博威---云架构决胜云计算

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10391|回复: 1

Docker的优势和虚拟机对比

[复制链接]
发表于 2021-1-12 08:11:11 | 显示全部楼层 |阅读模式

Docker是基于Go语言实现的云开源项目, 诞生于2013年初, 最初发起者是dotCloud公司。 Docker自开源后受到广泛的关注和讨论, 目前已有多个相关项目, 逐渐形成了围绕Docker的生态体系。 dotCloud公司后来也改名为Docker Inc, 专注于Docker相关技术和产品的开发 。


Docker项目目前已 加入了Linux基金会 , 遵循Apache 2.0协议, 全部开源代码均在https://gi也ub.com/docker/docker 上进行维护。 在最近 一次Linux基金会的调查中, Docker 是仅次于OpenStack的最受欢迎的云计算开源项目。


Docker的主要目标是 ” Build, Ship and Run Any App, Anywhere ” , 即通过对应用组件的封装(Packaging) 、分发 (Distribution)、 部署(Deployment)、 运行(Runtime)等生命周期的管理, 达到应用组件级别的 “一次封装 , 到处运行” 。这里的应用组件 ,既可以是一个Web应用 , 也可以是一套数据库服务, 甚至是一个操作系统或编译器。



Docker 基于Linux的多项 开源 技术 提供了高效、敏捷和轻量级的容器方案, 并且支持在多种主流 云平台(PaaS)和本地系统上部署。 可以说Docker为应用的开发和部署提供了 “一站式” 的解决方案。


可以简单地将Docker容器理解为一种沙盒( Sandbox)。 每个容器内运行一个应用, 不同的容器相互隔离, 容器之间也可以建立通信机制。 容器的创建和停止都十分快速, 容器自身对资源的需求也十分有限, 远远低于虚拟机。 很多时候, 甚至直接把容器当作应用本身也没有任何问题。





Docker的优势和虚拟机对比

举个简单的应用场景的例子。 假设用户试图基于最常见的LAMP ( Linux + Apache + MySQL + P旧)组合来运维一个网站。 按照传统的做法, 首先, 需要安装Apache MySQL PHP以及它们各自运行所依赖的环境;之后分别对它们进行配置(包括创建合适的用户、配置参数等);经过大量的操作后, 还需要进行功能测试, 看是否工作正常;如果不正常, 则意味着更多的时间代价和不可控的风险。 可以想象, 如果再加上更多的应用, 事情会变得更加难以处理。


更为可怕的是, 一旦需要服务器迁移(例如从阿里云迁移到腾讯云), 往往需要重新部署和调试。 这些琐碎而无趣的体力活,极大地降低了工作效率。


Docker提供了一种更为聪明的方式, 通过容器来打包应用, 意味着迁移只需要在新的服务器上启动需要的容器就可以了。 这无疑将节约大量的宝贵时间, 并降低部署过程出现问题的风险。


Docker在开发和运维中的优势

对开发和运维(DevOps)人员来说, 可能最梦寐以求的就是一次性地创建或配置, 可以在任意环境、 任意时间让应用正常地运行 。 而Docker恰恰是可以实现这一终极目标的瑞士军刀。

具体说来, Docker在开发和运维 过程中 , 具有如下几个方面的优势。


  • 更快速的交付和部署。使用Docker,开发人员可以使用镜像 来快速构建一套标准的开发环境;开发完成之后, 测试和运维人员可以直接使用相同环境来部署代码。 Docker可以快速创建和删除容器, 实现快速迭代, 大量节约开发、 测试、 部署的时间。并且, 各个步骤都有明确的配置和操作, 整个 过程全程可见, 使团队更容易理解应用的创建和工作过程 。

  • 更高效的资源利用。 Docker容器的运行不需要额外的虚拟化管理程序( Virtual Machine Manager, VMM,以及Hypervisor)支持, 它是 内核级的虚拟化 , 可以实现 更高的 性能, 同时 对资源的额外需求很 低。



  • 更轻松的迁移 和扩展。 Docker容器几乎可以在任意的平台上运行 ,包括物理机、 虚拟机、 公有云、 私有云、 个人电脑、 服务器等 。 这种兼容性让用户可以在不同平台之间轻松地迁移应用。

  • 更简单的更新管理。 使用Dockerfile, 只需要小小的配置修改, 就可以替代以往大量的更新工作。并且所有修改都以增量的方式进行分发和更新 , 从而实现自动化并且高效的容器管理。

Docker 与虚拟机比较


作为一种轻量级的虚拟化方式, Docker在运行应用上跟传统的虚拟机方式相比具有显著优势:

  • Docker容器很快, 启动和停止可以在秒级实现, 这相比传统的虚拟机方式要快得多 。
  • Docker容器对系统资源需求很少, 一台主机上可以同时运行数千个 Docker容器。
  • Docker通过类似Git的操作来方便用户获取、分发和更新应用镜像, 指令简明, 学习成本较低。
  • Docker通过Dockerfile 配置文件来支持灵活的自动化创建和部署 机制 , 提高工作效率。Docker容器除了运行其中的应用之外, 基本不消耗额外的系统资掘, 保证应用性能的同时, 尽量减小系统开销。 传统虚拟机方式运行 N个不同的应用就要启动N个虚拟机(每个虚拟机需要单独分配独占的 内存、磁盘等资源), 而Docker只需要启动N个隔离的容器, 并将应用放到容器内即可。当然, 在隔离性方面, 传统的虚拟机方式多了一层额外的隔离。但这并不意味着Docker就不安全。 Docker利用Linux系统上的多种防护机制实现了严格可靠的隔离。 从1.3版本开始, Docker引人了安全选项和 镜像签名机制, 极大地提高了使用Docker的安全性 。

    下表总结了使用Docker容器技术与传统虚拟机 技术的特性比较。


    虚拟化与Docker下面图比较了Docker和常见的虚拟机方式的不同之处。

    传统方式是在硬件层面实现虚拟化, 需要有额外的虚拟机管理应用和虚拟机操作系统层。


    Docker容器是在操作系统层面上实现虚拟化, 直接复用本地主机的操作系统, 因此更加轻量级。

 楼主| 发表于 2021-1-12 08:11:34 | 显示全部楼层
Docker的三大核心概念
?Kai ?Docker, 工作 ?2017-02-17 ? 1,210 次浏览 ? ?没有评论
镜像(Image)
容器 (Container)
仓库(Repository)



核心概念




Docker镜像

Docker镜像( Image)类似于虚拟机镜像, 可以将它理解为一个面向Docker引擎的只读模板, 包含了文件系统。

例如: 一个镜像可以只包含一个完整的Ubuntu操作系统环境, 可以把它称为一个 Ubun阳镜像。 镜像也可以安装了Apache应用程序(或用户需要的其他软件), 可以把它称为 一个Apache镜像。



镜像是创建Docker容器的基础。 通过版本管理和增量的文件系统, Docker提供了一套十分简单的机制来创建和更新现有的镜像, 用户甚至可以从网上下载一个已经做好的应用镜像,并通过简单的命令就可以直接使用。




Docker容器

Docker容器(Container)类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。

容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相五隔离、互不可见的。

读者可以把容器看做一个简易版的Linux系统环境(这包括root用户权限、进程空间、用户空间和网络空间等 ),以及运行在 其中的应用程序打包而成的应用盒子。镜像自身是只读的。容器 从镜像 启动的时候,Docker会在镜像的最上层创建一个个可写层,镜像本身将保持不变。




Docker仓库

Docker仓库(Reposit。可)类似于代码仓库,是Docker集中 存放镜像文件的场所。

有时候会看到有资料将Docker仓库和注册服务器(Registry)混为一谈,并不严格区分。实际上,注册服务器是存放仓库的地方,其上往往 存放着多个仓库。每个仓库集中存放某 类镜像,往往包括多个镜像文件,通过不同的标签(饱g) 来进行区分。根据所 存储的镜像公开分享与否, 图2-1 仓库和注册服务器

Docker仓库可以分为公开仓库( Public)

和私有仓库(Private)两种形式。

目前,最大的公开仓库是Docker Hub, 存放了数量庞大的镜像供用户下载。国内的公开

仓库包括DockerPool等,可以提供稳定的国内访问。

当然,用户如果不希望公开分享自己的镜像文件, Docker也支持用户在本地网络内创建

一个只能自己访问的私有仓库。

当用户创建了自己的镜像之后就可以使用push命令将它上传到指定的公有或者私有仓库。这样用户下次在另外一台机器上使用该镜像时,只需将其从仓库上pull下来就可以了。

。可以看出, Docker利用仓库管理镜像的设计理念与Git让非常相似。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|boway Inc. ( 冀ICP备10011147号 )

GMT+8, 2024-12-12 03:44 , Processed in 0.118366 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表