Most of your questions were answered by @meyay so some additional info.
The documentation of Docker Desktop contains information about the virtualization solutions, but I admit I couldn’t find all the info in one place. Since all operating systems are different and different vitualization technologies are supported on them Docker Desktop uses what it can. On Windows, it is either HyperV or WSL2, but on Linux it is qemu kvm. On macOS there are two ways, but on recent macOS the “Virtualization framework” can be used and it is required when VirtioFS is enabled, which is recommended.
Because it is confusing indeed. I already noted it to some people at Docker. The documentation indeed says:
Docker Engine acts as a client-server application with:
So it includes the CLI, but if you check the Docker Desktop overview, it mentiones the Engine and the CLI although the CLI is not linked:
What’s included in Docker Desktop?
- Docker Engine
- Docker CLI client
- Docker Buildx
…
You can also install the client without daemon even though it is part of the Engine. I guess the reason is something historical.
As Metin wrote, it is Alpine-based. LinuxKit: GitHub - linuxkit/linuxkit: A toolkit for building secure, portable and lean operating systems for containers
If you want to know more about what is inside, you can read a blogpost about a video I made and also watch the video:
Since then the name of the container that runs the Docker daemon inside the virtual machine has changed. It is “02-docker” now and not just “docker”. The old version also had the docker client in that container, now it is just the daemon. You don’t really need the client inside but it was convinient to use it for debugging.