docker 用的是 Linux 内核的 cgroup 功能。虚拟机用的是 CPU 的硬件虚拟化功能,这东西现在都是独占(听说 WSL2 用的也是虚拟机,但是可以让别的虚拟机共享虚拟化支持)。
Windows 不支持 Linux 的 cgroup, 所以实际上 Windows 的 docker 是先跑个虚拟机,在这个虚拟机里面跑一个 Linux 内核,由这个 Linux 内核提供 cgroup 来实现 docker 的支持。
所以 Windows 下面的其实是两个虚拟机软件,去抢硬件虚拟化的独占支持。好像 docker 的 windows 虚拟机是 hyper-v 吧?这样的话按说可以同时开 hyper-v 的虚拟机。