Docker这样的容器技术与虚拟化技术的区别是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker这样的容器技术与虚拟化技术的区别是啥?相关的知识,希望对你有一定的参考价值。

  Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
  在docker的网站上提到了docker的典型场景:
  Automating the packaging and deployment of applications
  Creation of lightweight, private PAAS environments
  Automated testing and continuous integration/deployment
  Deploying and scaling web apps, databases and backend services
  由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。
  构建标准化的运行环境,现有的方案大多是在一个baseOS上运行一套puppet/chef,或者一个image文件,其缺点是前者需要base OS许多前提条件,后者几乎不可以修改(因为copy on write 的文件格式在运行时rootfs是read only的)。并且后者文件体积大,环境管理和版本控制本身也是一个问题。
  PaaS环境是不言而喻的,其设计之初和dotcloud的案例都是将其作为PaaS产品的环境基础
  因为其标准化构建方法(buildfile)和良好的REST API,自动测试和持续集成/部署能够很好的集成进来
  因为LXC轻量级的特点,其启动快,而且docker能够只加载每个container变化的部分,这样资源占用小,能够在单机环境下与KVM之类的虚拟化方案相比能够更加快速和占用更少资源
  虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。
  虚拟化,原本是指资源的抽象化,也就是单一物理资源的多个逻辑表示,或者多个物理资源的单一逻辑表示。具体到服务器虚拟化,就是多个物理资源的单一逻辑表示。
  虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。  
  在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件。
参考技术A 对于容器技术与虚拟化技术的区别,,云计算的基石是虚拟化技术。如果从一种观察视角看,虚拟化技术和容器技术分别代表了两种不同的方向,虚拟化技术是从上往下看,而容器技术是从下往上看。https://community.emc.com/thread/214974  由于Docker可以运行在任何有合理数据内核的Linux虚拟机上,所以它可以运行在很多IaaS提供的云上。许多大的云提供商宣布了对Docker和它的生态系统的附加支持。AWS推出了EC2 Container服务,让客户使用AWS上的Docker容器轻松地运行和管理分布式应用。EC2 Container服务与Docker Hub集成。Docker Hub是一个托管的资源库,其中基于Docker容器的应用在整个开发社区或一个私人组织内分发和共享。AWS还直接贡献于Docker Hub官方资源库及开源项目。虽然Docker具有诸多好处,但是这也得益于正确的使用方式。对于目前Docker在企业生产环境中暴露的问题,比如安全以及部署等,这是因为企业把Docker当成虚拟化平台使用,并没有正确理解容器技术的使用场景。本回答被提问者和网友采纳

以上是关于Docker这样的容器技术与虚拟化技术的区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Docker容器与虚拟机区别

docker容器与虚拟机有啥区别?

Docker和云计算的关系是啥?

Docker和云计算的关系是啥?

3.Docker与LXC虚拟化技术的区别——虚拟化技术本质上是在模拟硬件,Docker底层是LXC,本质都是cgroups是在直接操作硬件

Docker是啥?