<p>As far as I understand Kubernetes kubelet talks to CRI (Container Runtime Interface) to run containers. So every Container runtime which is being used in Kubernetes should follow CRI implementation (<a href="https://www.ianlewis.org/en/container-runtimes-part-4-kubernetes-container-run" rel="nofollow noreferrer">https://www.ianlewis.org/en/container-runtimes-part-4-kubernetes-container-run</a>). Docker Desktop version neither runs dockerd or containerd. It runs HyperKit for High-Level virtualization. Is it CRI compliant and could be used with Kubernetes?</p>

sn.anurag
<p>Hyperkit is not CRI, it is hypervisor such as VirtualBox, which is used for <code>Docker Desktop for Mac</code>. From <a href="https://docs.docker.com/docker-for-mac/docker-toolbox/" rel="nofollow noreferrer">Official docker documentation</a> </p>

<blockquote>
  <p>Docker Desktop for Mac uses HyperKit instead of Virtual Box. Hyperkit
  is a lightweight macOS virtualization solution built on top of
  Hypervisor.framework in macOS 10.10 Yosemite and higher.</p>
</blockquote>

<p>If you check this <a href="https://blog.docker.com/2016/05/docker-unikernels-open-source/" rel="nofollow noreferrer">blog</a>, it explains very well relationships between hypervisors and CRI.</p>

<p><a href="https://i.stack.imgur.com/l58GDl.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/l58GDl.png" alt="Docker-Hyperkit-connectivity"></a></p>

<p>As you can see the above image, Docker Container Engine (or containerd) is in top of Linux kernel, so it has nothing to do with Hypervisors. This is basically the main difference between VMs and Containers. If you have Linux kernel, you can run your CRI there. </p>

<p>So, Docker Desktop with Hyperkit, will work with Kubernetes</p>

<p>Hope it helps! </p>
