目录
docker容器与传统虚拟化的区别是什么
首页 运维 Docker docker容器与传统虚拟化的区别是什么

docker容器与传统虚拟化的区别是什么

Jan 28, 2022 am 10:36 AM
docker

区别:1、传统虚拟化的创建速度很慢,而容器虚拟化创建速度很快;2、传统虚拟化增加了系统调节链的环节有性能损耗,而容器虚拟化共性内核,几乎没有性能损耗;3、传统虚拟化支持多种操作系统,而容器虚拟化仅支持内核所支持的操作系统。

docker容器与传统虚拟化的区别是什么

本教程操作环境:linux7.3系统、docker-1.13.1版、Dell G3电脑。

docker容器与传统虚拟化的区别是什么

传统的虚拟化技术

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

随着硬件厂商的不断发展,很多在虚拟机里面的指令不需要通过虚拟的硬件层走到真正的硬件层.硬件厂商是支持直接在虚拟机里面实用指令操作硬件,这个技术我们就称为是硬件辅助的虚拟化.这种硬件的辅助虚拟化比起软件虚拟的硬件层来说,他不需要模拟所有的硬件.有些指令是直接运行在虚拟机上来操作硬件的.性能和效率比传统的虚拟化高更高些.

系统级别的虚拟化

特点:

不需要模拟硬件层.

共享同一个宿主机的内核

传统虚拟化和容器虚拟化的区别

28.png

Container的核心技术

1.CGroup限制容器的资源使用

2.Namespace机制,实现容器间的隔离

3.chroot,文件系统的隔离.

CGroup:

Linux内核提供的限制,记录和隔离进程组所使用的资源.由Google的工程师提出,后台被整合到内核中.通过不同的子系统来实现对不同资源使用的控制和记录.

/sys/fs/cgroup
登录后复制

Namespace:

pid:容器有自己独立的进程表和1号线程.

net:容器有自己独立的network info

ipc:在ipc通信的时候,需要加入额外信息来标示进程

mnt:每个容器都有自己唯一的目录挂载

utc:每个容器都有独立的hostname和domain

chroot:

在宿主机中的某个目录就是容器中的根目录.

所有的应用程序都有自己的依赖关系,其中包括软件和硬件资源。 Docker是开发者的开放平台,通过将每个应用程序打包到容器中来隔离依赖关系。容器就像是轻量级的虚拟机,可以扩展到成千上万的节点,通过在不同虚拟环境中运行相同应用程序来帮助提升云的可移植性。虚拟机广泛用于云计算,通过使用虚拟机来实现隔离和资源控制。 虚拟机使用自己的内存管理加载完整的操作系统,使应用程序更加高效和安全,同时确保其高可用性。

Docker容器与虚拟机有什么不同? 

  虚拟机具有完整的操作系统,其自身的内存管理通过相关的虚拟设备进行支持。 在虚拟机中,为用户操作系统和虚拟机管理程序分配有效的资源,从而可以在单台计算机(或主机)上并行运行一个或多个操作系统的多个实例。 每个客户操作系统都作为主机系统中的单个实体运行。 

  另一方面,Docker容器是使用Docker引擎而不是管理程序来执行的。 因此容器比虚拟机小,并且由于主机内核的共享,可以更快地启动,具有更好的性能,更少的隔离和更好的兼容性。 Docker容器能够共享一个内核并共享应用程序库,因此容器比虚拟机具有更低的系统开销,只要用户愿意使用单一平台来提供共享的操作系统,容器可以更快,更少资源。虚拟机可能需要几分钟才能创建并启动,而只需几秒钟即可创建并启动一个容器。与在虚拟机中运行应用程序相比,容器中包含的应用程序提供了卓越的性能。 

  Docker容器比虚拟机弱的一个关键指标就是“隔离”。英特尔的VT-d和VT-x技术为虚拟机提供了ring-1硬件隔离技术,因此虚拟机可以充分利用它的优势。它可以帮助虚拟机器高效使用资源和防止相互干扰。 Docker容器还没有任何形式的硬件隔离,因此它们容易受到攻击。

如何进行进行选择? 

  选择容器还是虚拟机依赖于应用程序如何设计。 如果应用程序旨在提供可伸缩性和高可用性,那么容器是最好的选择,否则应用程序可以放置在虚拟机中。对于高I/O要求的业务,例如数据库服务,建议部署Docker+物理机,因为在虚拟机中部署Docker,I/O性能将受到虚拟机的限制。对于虚拟桌面服务等强调租户权限和安全的业务,建议采用虚拟机方式,虚拟机的多租户强隔离特性,保证租户在拥有虚机root权限的同时,其他租户和主机的安全。 

  或者更好的选择是混合方案,运行在虚拟机中的容器。 Docker容器可以在虚拟机内部运行,虚拟机并为它们提供经过验证的隔离,安全属性,移动性,动态虚拟网络等。为实现安全隔离和资源的高利用率,基本应该遵循:不同租户的业务运行采用虚拟机隔离,相似类型的业务部署在同一组容器上的思路。

结论

  Docker容器正在成为DevOps环境中的一个重要工具。 DevOps领域内的Docker Containers的用例非常多。在Docker容器上运行应用程序,然后在任何地方部署(Cloud或内部部署或任何Linux的风格)现在都已成为现实。 

  在异构环境中工作,虚拟机提供了高度的灵活性,而Docker容器主要关注应用程序及其依赖关系。Docker Containers允许通过使用每个云的虚拟机环境来处理云,从而轻松移植跨云的应用程序堆栈。这代表了一个有用的功能,在没有Docker Containers的情况下,必须以更加复杂和乏味的方式来实现。这里阐述的并不是关于放弃虚拟机,而是在必要时除了虚拟机之外,根据实际情况使用Docker容器,不认为Docker容器可以完全清除虚拟机。

推荐学习:《docker视频教程

以上是docker容器与传统虚拟化的区别是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

docker怎么退出容器 docker怎么退出容器 Apr 15, 2025 pm 12:15 PM

退出 Docker 容器的四种方法:容器终端中使用 Ctrl D 快捷键容器终端中输入 exit 命令宿主机终端中使用 docker stop <container_name> 命令宿主机终端中使用 docker kill <container_name> 命令(强制退出)

docker怎么更新镜像 docker怎么更新镜像 Apr 15, 2025 pm 12:03 PM

更新 Docker 镜像的步骤如下:拉取最新镜像标记新镜像为特定标签删除旧镜像(可选)重新启动容器(如果需要)

docker内的文件怎么拷贝到外面 docker内的文件怎么拷贝到外面 Apr 15, 2025 pm 12:12 PM

Docker 中将文件拷贝到外部主机的方法:使用 docker cp 命令:执行 docker cp [选项] <容器路径> <主机路径>。使用数据卷:在主机上创建目录,在创建容器时使用 -v 参数挂载该目录到容器内,实现文件双向同步。

docker容器名称怎么查 docker容器名称怎么查 Apr 15, 2025 pm 12:21 PM

可以通过以下步骤查询 Docker 容器名称:列出所有容器(docker ps)。筛选容器列表(使用 grep 命令)。获取容器名称(位于 "NAMES" 列中)。

docker怎么重启 docker怎么重启 Apr 15, 2025 pm 12:06 PM

重启 Docker 容器的方法:获取容器 ID(docker ps);停止容器(docker stop <container_id>);启动容器(docker start <container_id>);验证重启成功(docker ps)。其他方法:Docker Compose(docker-compose restart)或 Docker API(参考 Docker 文档)。

怎么看docker进程 怎么看docker进程 Apr 15, 2025 am 11:48 AM

Docker 进程查看方法:1. Docker CLI 命令:docker ps;2. Systemd CLI 命令:systemctl status docker;3. Docker Compose CLI 命令:docker-compose ps;4. Process Explorer(Windows);5. /proc 目录(Linux)。

docker desktop怎么用 docker desktop怎么用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop?Docker Desktop 是一款工具,用于在本地机器上运行 Docker 容器。其使用步骤包括:1. 安装 Docker Desktop;2. 启动 Docker Desktop;3. 创建 Docker 镜像(使用 Dockerfile);4. 构建 Docker 镜像(使用 docker build);5. 运行 Docker 容器(使用 docker run)。

docker怎么启动mysql docker怎么启动mysql Apr 15, 2025 pm 12:09 PM

在 Docker 中启动 MySQL 的过程包含以下步骤:拉取 MySQL 镜像创建并启动容器,设置根用户密码并映射端口验证连接创建数据库和用户授予对数据库的所有权限

See all articles