As I mentioned above, I’ve been playing with Ansible lately. Ansible isn’t directly comparable with Docker, but they do intersect in some ways. In both cases, you need to provide a set of actions, and the end result is having an easily reproducible system.
I have a Nextcloud server, and it uses Docker Compose. It works pretty well. It fetches the latest version of Nextcloud container from Docker Hub with zero customizations, and it just works. All the complexity of Nextcloud configuration is hidden inside that container. That’s helpful when you’re an uncommitted user who just wants to try something. Sooner or later you might want to have a more fine-grained control over the configuration of your Nextcloud server. That’s one of the use cases where Ansible shines.