1. С безопасностью всё непросто. Вам нужен хороший специалист со знанием Selinux/Apparmor чтобы вручную изолировать контейнеры друг от друга. Насколько я знаю, по умолчанию LSM в Docker не задействованы (решето кароч). В связке KVM/libvirt оно настроено из коробки, нужно только в конфиге включить.
2. С лимитами всё непросто тоже. Docker использует cgroups. В целом они работают. Особенно CPU и Memory (хотя когда я крутил с ними были определённые проблемы: память например ограничивалась, но виделась целиком, что вводило в заблуждение некоторые приложения). Дисковый "контроллер" включался, но по факту не работал (а он, под нагрузкой, самый важный, по крайней мере для меня). Ограничить сеть я вообще не смог (в случае ddos, например, целевой машине лучше иметь 100 мбит). В связке KVM/libvirt настраивается и работает всё.
На этом моменте я от docker отказался и по возможностям ничего сказать не могу. Данные могли устареть (docker активно пилится). По моему мнению, docker - отличная игрушка для программистов, но совершенно не годится для серьёзного продакшена. Кроме того, для KVM/libvirt есть отличные управлялки: OpenNebula и Cloudstack, которые отлично масштабируются с 10 до 1000 хостов (можно и больше), есть ли подобные по удобству и функционалу для docker? - Не уверен.