Why not use libvirtd, which does all that and a lot more, and is already present on just about every Linux distro? (more than likely already running on every Linux machine, if you are using virt or containers)
This is just a guess, but I believe it's because of what you just said; "running on every Linux machine". Docker runs on more than Linux, and you need a solution that can manage containers everywhere.
Fair enough, but libvirtd is written in C and reasonably portable and the project already ports all the client side stuff to Windows (so the project is not against portability patches, unlike, say, systemd-machined).
Libvirtd has been around for 10 years so it's likely to be less buggy and better maintained than anything you can write from scratch.