为什么docker虚拟化比VM更快

为什么docker虚拟化比VM更快,docker,virtual-machine,Docker,Virtual Machine,据我所知,虚拟机使用硬件虚拟化,而Docker使用软件虚拟化,因此具有更好的性能(在某种情况下,比如说,我在Windows机器上运行一个Docked Linux)。但操作系统虚拟化比硬件虚拟化快的确切原因是什么呢?Docker不做虚拟化。它不仅用于根文件系统,还用于进程信息(PID名称空间)、装入点、网络、IPC(共享内存)、UTS信息(主机名)和用户id,以实现类似于chroot的效果 容器与主机共享内核。为了安全起见,Docker使用AppArmor/SELinux,并过滤系统调用。控制组(

据我所知,虚拟机使用硬件虚拟化,而Docker使用软件虚拟化,因此具有更好的性能(在某种情况下,比如说,我在Windows机器上运行一个Docked Linux)。但操作系统虚拟化比硬件虚拟化快的确切原因是什么呢?

Docker不做虚拟化。它不仅用于根文件系统,还用于进程信息(PID名称空间)、装入点、网络、IPC(共享内存)、UTS信息(主机名)和用户id,以实现类似于chroot的效果


容器与主机共享内核。为了安全起见,Docker使用AppArmor/SELinux,并过滤系统调用。控制组(称为)用于进程记帐和对资源施加限制。

Docker不进行虚拟化。它不仅用于根文件系统,还用于实现类似chroot的效果,包括进程信息(PID命名空间)、装入点、网络、IPC(共享内存)、UTS信息(主机名)和用户id

容器与主机共享内核。为了安全起见,Docker使用AppArmor/SELinux并过滤系统调用。控制组(称为)用于进程记帐和对资源施加限制。

Docker与虚拟化无关。它与容器化有关(如何在隔离环境中运行进程)

这意味着如果不使用某种虚拟化(Virtualbox、Hyper-v…),就无法在windows上运行linux容器或在linux上运行windows容器。在开发时在笔记本电脑上这样做是可以的,但在生产中,您可以为容器选择合适的体系结构

什么是容器? 发件人:

传统的Linux容器实际上只是Linux系统上的普通进程。这些进程组与使用资源限制的其他进程组隔离开来:

  • (对照组[cGroup])
  • Linux安全约束(Unix权限、功能、SELinux、AppArmor、seccomp等),以及
  • 名称空间(PID、网络、装载等)
使用linux命令手动设置所有这些(网络名称空间、iptable规则等)是很棘手的,因此当您键入
docker…
命令时,docker守护进程的工作就是执行这些操作,并且事情会在后台发生

关于速度。。。 首先,由于引入的复杂性,容器的速度可能不如直接在主机网络堆栈上运行进程快。请参见以下示例:

但是,他们将为您提供速度。如何提供

  • 容器未满OSs(基本映像的大小较小)
  • 容器遵循微服务和“只做一件事,把它做好”的概念。这意味着你不能像对待虚拟机那样把所有东西都放在容器中(这称为关注点分离,它产生了更轻量级的应用程序组件。它还为开发人员提供了速度,因为不同的团队可以分别处理他们的组件)
  • 图像层:docker有一种将图像拆分为层的内部方法,当您构建新图像时,可以重用层。这可以提供良好的部署速度(请考虑这在回滚时有多有用)
关于Windows容器 容器是一个“linux”但这一波容器化浪潮也对Windows领域产生了影响。起初,
docker toolbox
使用Virtualbox在linux虚拟机上运行容器。后来,引入了
docker for Windows
,并提供了直接在主机上或
hyper-v
上运行容器的选项。如果可以访问,请访问查找更多信息。

Docker与虚拟化无关。它与容器化(如何在隔离环境中运行流程)有关

这意味着如果不使用某种虚拟化(Virtualbox、Hyper-v…),就无法在windows上运行linux容器或在linux上运行windows容器。在开发时在笔记本电脑上这样做是可以的,但在生产中,您可以为容器选择合适的体系结构

什么是容器? 发件人:

传统的Linux容器实际上只是Linux系统上的普通进程。这些进程组与使用资源限制的其他进程组隔离开来:

  • (对照组[cGroup])
  • Linux安全约束(Unix权限、功能、SELinux、AppArmor、seccomp等),以及
  • 名称空间(PID、网络、装载等)
使用linux命令手动设置所有这些(网络名称空间、iptable规则等)是很棘手的,因此当您键入
docker…
命令时,docker守护进程的工作就是执行这些操作,并且事情会在后台发生

关于速度。。。 首先,由于引入的复杂性,容器的速度可能不如直接在主机网络堆栈上运行进程快。请参见以下示例:

但是,他们将为您提供速度。如何提供

  • 容器未满OSs(基本映像的大小较小)
  • 容器遵循微服务和“只做一件事,把它做好”的概念。这意味着你不能像对待虚拟机那样把所有东西都放在容器中(这称为关注点分离,它产生了更轻量级的应用程序组件。它还为开发人员提供了速度,因为不同的团队可以分别处理他们的组件)
  • 图像层:docker有一种将图像拆分为层的内部方法,当您构建新图像时,层可以重用