在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主机上对其进行查看。
,最后,什么是容器?
Docker使用一种称为 namespace 的技术来提供称为容器的隔离工作区。运行容器时,Docker会为该容器创建一组 namespace ,然后容器中的每个进程都将在单独的 namespace 中运行。参见official docementation。
关于docker - docker在Linux机器上运行时是否使用虚拟化解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55989248/