docker和虚拟机的关系

docker和虚拟机的关系

扫码添加渲大师小管家,免费领取渲染插件、素材、模型、教程合集大礼包!

大家好,今天来介绍docker和虚拟机的关系(docker是沙盒吗)的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!

docker 入门(二):docker 和 沙盒、虚拟机以及 Kubernetes 的关系

做开发的基本都听说过沙盒 (Sandbox) 和虚拟机 (Virtual Machine,简称 VM) ,如今容器技术很火,其中以 docker 最受大家欢迎。作为一种集群管理工具,K8s 最近也是火的不要不要的。 我们经常会讲 docker 和 K8s 联系起来,那么两者之间又存在什么关联呢?

首先 Sandbox 和 VM 都是属于 虚拟技术 ,用来虚拟软件运行环境并具有资源隔离的功能。Sandbox 比较“轻”(只需要虚拟出一个小的环境)且一旦退出就释放之前占用的资源;VM 则比较重(虚拟出整个操作系统,相当于子电脑)。关于 Sandbox 和 VM 的区别可以参考博客: https://www.jianshu.com/p/6acdfd60b014 。
容器是属于 Sandbox 的一种。 顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去。 容器技术的核心功能 ,就是通过 约束和修改进程的动态表现 ,从而为其 创造出一个“边界” 。正是因为这个边界才会让容器里面的程序看不到宿主机上其他的程序从而给程序一种它就是在一个独立的操作系统上的假象。容器具有如下几个优点:

Docker 是一种 轻量级的虚拟化 技术,即容器技术。随着 Docker 的开源,docker 凭借其“轻”的特点得到迅速的普及。

这三个优点恰是 VM 的缺点。

Docker 原意是指处理码头集装箱的工人。 首先需要注意的是, Docker 本身不是容拦尘雀器 ,而是一个 开源的应用容器引擎 。Docker 让开发者可以以统一的方式 打包 他们的 应用以及依赖包 到一个 可移植的容器 中,然后 发布 到任何 安装了docker引擎的服务器上 (包括流行的Linux机器、windows机器),也可以实现虚拟化。兄州从这个描述可以看出 Docker 的几种常用任务:

Docker 的两句口号很准确地描述了其功能:

1. Build, ship and run
顾名思义,创建、运输和运行。
举个例子来理解:比如说我在 A 地建好了一个厂区,该厂区主要的是车间,其次还有一些配套的生活设施(比如食堂、超市、宿舍、水电等)。现在我要将厂迁到 B 地,按照常规思路就是把 A 地的车间拆了运到 B 地重新组装、并在 B 地建好配套的生活设施,工程量明显很大。假设现在有一种魔法能够在A地将车间及其配套的生活设施 复制一份并打包成一个镜像 image(文件) ,然后将该镜像迁移到 B 地,这样在B地马上就能够投入使用,省去了拆机、重装以及搭建配套生活设施的工作,非常方便快捷。
现在我们将 车间类比成一个application ,将 配套的生活设施类比成依赖 ,那么 docker 就是这种魔法 。

2. Build once, run anywhere
顾名思义,一次创建、随地运行。
我们知道 车间是用于工业生产的 ,即一个application。在这个世界,还存在很简早多其他的application,比如学校、医院、写字楼、商场、体育场等,它们各自负责不同的用途。假设这些 application 都是能够共享的,那么这个效率将会很高,比如国家A需要用到体育馆,可以从国家B复制一个过来;国家B需要用到学校,可以从国家A复制一个过来。Docker 使用的就是这种理念,Docker 中包含三个核心部分:

镜像仓库(Repository)可以是私有的(比如本地机器的 Docker repository),也可以是公有的(比如 Docker 官方提供的Docker Hub、第三方的 Hub)。 负责管理镜像仓库(Repository)的是 Docker Registry 服务 (就像是图书馆管理员)。Docker 官方提供的 Docker Hub 对于镜像来源有着严格的把控,有很多高质量的 application 镜像,也是开发人员用的最多的public registry 服务。

那么为什么需要 Kubernetes 呢?就在 Docker 容器技术被炒得热火朝天之时,大家发现,如果想要将 Docker 应用于具体的业务实现(当 容器和服务器的数量达到一定规模 的时候,就会碰到管理的
问题,即 如何有效管理大量的服务器和容器 ,保证 应用的稳定运行、方便升级和故障的快速解决 ),是存在困难的—— 编排、管理和调度等各个方面都不容易 。于是就迫切 需要一套容器编排工具 ,能够对 Docker 和容器进行 更高级、灵活的管理 。容器编排工具提供图形化界面或者命令行来管理容器和服务器集群,提供容器配置、任务发布、服务发现、负载均衡、系统监控和故障恢复、声明式系统配置以及有关容器部署和性能的规则和约束定义机制等。
就在这个时候, Google开发的 Kubernetes 从众多编排工具中脱颖而出 ,赢下了容器编排工具大战。Kubernetes 是一种 基于容器的集群管理平台 。Kubernetes 是希腊语,意为“舵手、领航员”,大家都习惯将 Kubernetes 简称为K8s(ubernete 包含8个字母)。K8s 最初由 Google 创建而后加入 openstack 基金会并发布了 K8s V1.0。

Docker 公司自己有一款名为 Docker Swarm的产品,它是一个容器集群和调度工具,功能类似于Kubernetes。相比 Kubernetes,Swarm在集群搭建和使用上要相对简单一些,学习和部署成本相对低一些。较新版本的Docker已经集成了Swarm。Swarm支持跨多个主机进行编排,管理较小规模的容器集群也绰绰有余,对于初学者也可以很快的部署和运行。

笔者水平有限,如有错误,敬请指正!

参考:
https://www.cnblogs.com/misswangxing/p/10669444.html
https://blog.csdn.net/fly910905/article/details/98962455

docker和虚拟机的区别 知乎

Docker
Docker是一个集开发、打包、运行应用于一体的开放式平台。Docker可以用来快速交付应用。使用Docker,你可以将应用程序从你的基础设施中分离出来,并将基础设施当做一个管理平台。Docker可以加快打包时间,加快测试,加快发布,缩短开发及运行代码之间的周期。Docker通过结合内核容器化特点和工作流,并使之工具化来实现这一切,帮助管理和发布你的应用。
虚拟机
虚拟机在本质上就是在模拟一台真实的计算机设备,同时遵循同样的程序执行方式。虚拟机能够利用虚拟机管理程序运行在物理设备之上。反过来,虚拟机管理程序则可运行在主机设备或者裸机之上。
传统的虚拟机需要模拟数台机器包括硬件,每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给他的资源将全部被占用。每一个虚拟机包含应用,必要的二进制和库,以及一个完整的用户操作系统。
Docker和虚拟机有什么区别?
虚拟机
1、资源占用多,虚拟机会独占一部分内存和硬盘空间。它运行的时候,其他程序就不能使用这些资源,哪怕虚拟机里面的应用程序,真正使用的内存只有1MB,虚拟机依然需要几百MB的内存才能运行。
2、冗余步骤多,虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登录。
3、启动慢,启动操作系统需要多久,启动虚拟机就需要多久,可能需要等几分钟,应用程序才能真正运行。
Docker
1、启动快,容器里面的应用,直接就是底层系统的一个进程,而不是虚拟机内部的进程。所以启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。
2、资源占用少,容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,不可避免要占用所有资源;另外,多个容器可以共享资源,虚拟机都是独享资源。
3、体积小,容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。

Docker跟一般的虚拟机有什么区别

Docker和虚拟机有各自擅长的领域,在软件开发、测试场景和生产运维场景中各有优劣势:
1、Docker启动快宽察闷速属于秒级别,虚拟机通常需要几分钟去启动;
2、Docker需要的资源更少,Docker在操作系统级别进行虚拟化,Docker容器和内核交互,几乎没有性能损耗,而虚拟机就差了很多;
3、Docker更轻量,Docker的架构可以共用一个内核与共享应用程序库,所占内存极小;同样的硬件环境,Docker运行的镜像数远多于虚拟机数量,对系统的利用率非常高;
4、与虚拟机相比,Docker隔离性更弱,Docker属于进程之间的隔离,虚拟机可实现系统慎弯级别隔离;
5、Docker的安全性也更弱,Docker的租户root和宿主机root相同,一旦容器内的用户从普通用户权限提升为root权限,它就直接具备了宿主机的root权限,进而可进行无限制的操作。虚拟机租户root权限和宿主机的root虚拟机权限是分离的,并且虚拟机利用如Intel的VT-d和VT-x的ring-1硬件隔离技术,这种技术可以防止虚拟机突破和彼此交互,而容器至今还没有任何形式的硬件隔离;
6、Docker的集中化管理工具还不算成熟,各种虚拟化技术都有成熟没败的管理工具,比如:VMware vCenter提供完备的虚拟机管理能力;
7、Docker对业务的高可用支持是通过快速重新部署实现的,虚拟化具备负载均衡,高可用、容错、迁移和数据保护等经过生产实践检验的成熟保障机制,Vmware可承诺虚拟机99.999%高可用,保证业务连续性;
8、虚拟化创建是分钟级别的,Docker容器创建是秒级别的,Docker的快速迭代性,决定了无论是开发、测试、部署都可以节省大量时间;
9、虚拟机可以通过镜像实现环境交付的一致性,但镜像分发无法体系化,Docker在Dockerfile中记录了容器构建过程,可在集群中实现快速分发和快速部署。

Docker是什么它比虚拟机强在哪里

Docker是一个开源的应用容器引擎,可以让开发者将自身的应用或者软件移植到镜像中,然后发布到任何一个Windows机器或者Linux机器上,当然Docker也可以实现虚拟化。而一个完整的Docker是由:Docker Client客户端,Docker Daemon 守护进程,Docker Image 镜像和Docker Container 容器来组成的。容器是完全采用沙箱机制,相互之间不会有任何接口。
而Docker比虚拟机强大的地方在于:
第一:启动时间:Docker容器是秒级启动的,而虚拟机时分钟级启动,在启动速度方面,Docker就能够完美地碾压了虚拟机。
第二:占用空间和性能:在占用空间和性能方面,Docker容码链器镜像比虚拟机要小得多且性能要比虚拟机更强。
第三:使用要求:虚拟机是基于硬件的虚拟化,其CPU也要有支持虚拟化的支持,Docker共享宿主机内核,可运行在喊腊主流的Linux,不用考虑CPU是否支持迟渗孙虚拟化技术。

分享到 :
相关推荐

WooCommerce免费主题安装后不显示的可能原因(woocommerce安装失败)

WooCommerce是WordPress的开源电子商务插件。它可以将任何一个Wor...

怎么选择云服务器的配置(怎么选择云服务器的配置?)

不同的云服务器配置。价格和性能也有明显区别。想要购买高性价比的云服务器。在买之前建议...

Vultr VPS密码忘记怎么办 Vultr VPS重置密码方法介绍(vultr修改root密码)

Vultr是一家海外云服务器商。全球有17个数据中心。主要提供基于KVM架构的海外服...

nginx配置文件详解(nginx基本配置)

大家好,今天来介绍nginx配置文件详解(nginx的配置)的问题,以下是渲大师小编...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注