You kinda missed the point that docker is more about packaging the applications than running them. Running apps is easy. Packaging in such a way that they could be run without hassle - hard.
Strict versioning of every dependency - exactly the thing a packaging system solves.
Specific system configuration? Also not a problem at all with netboot images.
CI picks up your image build, then commits its record to a DB from which DHCP server looks up a boot image for given MAC, then it either SSHed a reboot command or used an IPMI reboot. Voila
Today, some server motherboard firmwares can boot images off HTTP, vlan, and can talk with the boot server itself on HTTP
It could have easily been VMs instead of containers. IMHO, it was all the packaging...