One of the past maintainers of minikube here. Minikube, while targeted towards Kubernetes developers, also provides all the features you'd want here. It also takes away most of the pain from virtual machine management w/ native hypervisors.

If you're looking for customizability (boot image, docker version, container runtime), minikube is probably your best bet. It even comes with some rudimentary file-sharing and port-forwarding primitives, but it isn't as batteries-included as Docker desktop. On the other hand, you have full ssh access to the VM to do whatever you want (+startup scripts, etc.)

Awhile back, I wrote up a comparison of all the Docker Desktop Alternatives. [1]

[1] https://matt-rickard.com/docker-desktop-alternatives/

Huh, I thought kind was the spiritual successor to minikube (which I used fondly years ago). When should one reach for minikube over kind today?

From the kind readme[1]...

> kind was primarily designed for testing Kubernetes itself, but may be used for local development or CI.

minikube was designed for those who want a local kubernetes environment for development. It didn't work well for testing Kubernetes itself which led to kind. They had two different, though slightly overlapping, goals.

[1] https://github.com/kubernetes-sigs/kind