Я правильно понимаю, что вы хотите для каждого пользователя создавать новую VPS? Не думаю, что кто-то такое практикует, т.к. в этом нет особого смысла (хотя я не знаю, что у вас за продукт). Я думаю, ваша задача решается изоляцией пользователей друг от друга на уровне приложения. DNS настраивается через wildcard, т.е. A-запись вида *.domain.com, роутинг - на уровне приложения/веб-сервера.
Если же вам очень хочется поднимать VPS под пользователя, то API того же AWS это позволяет. Прямо из образа виртуальной машины можно разворачивать инстансы. Тут надо читать документацию вашего хостинг-провайдера.
Что касается Docker - я не думаю, что его тут можно как-то приспособить.