docker - docker在Linux机器上运行时是否使用虚拟化解决方案?

标签 docker virtualization

在Windows上使用Docker时,这些容器在Windows上的hyper-v linux VM中并行运行。
因此,在ubuntu中启动容器时,是否需要任何虚拟化解决方案(例如hyper-v),或者这些容器只是作为ubuntu中的进程运行?

我的第一句话的来源- How docker desktop runs linux containers on Windows machine

最佳答案

首先,为什么要使用hyper-v?

在Windows上使用hyper-v VM的docker的原因仅在于:对于linux容器,它必须共享主机的linux内核。但是在Windows上,我们没有Linux内核,因此docker为您设置了hyper-v VM,然后让您的容器共享内核。

第二,为什么不在Linux上使用VM?

但是在Linux上,主机已经有一个Linux内核,因此容器可以共享该内核而无需使用任何VM。

实际上,从下图可以看到,当您启动一个新容器时,它将自动新建一个进程containerd-shim,它将作为一个进程运行,您可以使用ps aux | grep docker在Linux主机上对其进行查看。

enter image description here

,最后,什么是容器?

Docker使用一种称为 namespace 的技术来提供称为容器的隔离工作区。运行容器时,Docker会为该容器创建一组 namespace ,然后容器中的每个进程都将在单独的 namespace 中运行。参见official docementation

关于docker - docker在Linux机器上运行时是否使用虚拟化解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55989248/

相关文章:

node.js - 意想不到的 ... sequelize.js 中的选项

mongodb - 如何从dockerfile启动mongodb

python docker 抛出错误 : AttributeError: module 'six' has no attribute 'PY34'

wpf - 使用 VirtualizationMode.Recycling 时,TreeView 错误地将项目显示为展开状态

linux - 我应该使用哪个虚拟机管理程序?

linux - Linux 中的 VMX 测试中出现软锁定

docker - 在容器中写入文件时,Docker权限被拒绝

docker - Gitlab CI/Docker : ssh-add keeps asking for passphrase

security - 如何缓解 Docker 容器中的权限提升以保护主机 FS

virtualization - Windows 10 中的虚拟(假)主监视器?