Actually, I chroot within a VM.
Keep in mind that chroot can be useful when used properly. The best security comes from applying the principles in the article to the program you are running in a chroot. To use lighttpd as an example:
First, the more software is deployed within chroot environment, the more dangerous it becomes
In it's simplest configuration, lighttpd requires no binaries within the chroot directory.
Second, the number of ways that root user can break out of chroot is huge.
I tested the example code, and it only works when executed as root. If you drop privileges (--userspec=nobody:nogroup), this particular example no longer works.
Third, if there is no root user defined within the chroot environment, no SUID binaries, no devices, and the daemon itself dropped root privileges right after calling chroot() call, breaking out of chroot appears to be impossible.
This is what lighttpd can do.
Fourth, in some cases attackers might not be able to break, but instead will be able to somewhat affect such processes.
As far as I know, Lighttpd does not interact with local processes and so cannot affect them.
With other programs, you mileage may vary. I use scponly to chroot scp sessions, for example, and it requires binaries and devices within the chroot directory.