Well, Docker did a few things differently then these older approaches. First, the one-process-per-container mantra, second the layered file system and build process and third, the "wireing together" of multiple containers via exposed ports.
Zones and Jails were more like LXC and were mostly used as a "lightweight virtual machine".