These three approaches sit on a spectrum from simplicity to power, and the choice between them often reflects the size and values of the organisation running them.
Docker + Ansible
This is the most "manual" approach. Docker handles running individual containers, while Ansible is a configuration management tool that automates the steps a sysadmin would otherwise do by hand — installing Docker, copying config files, running docker run commands, etc. There's no built-in cluster awareness: you're essentially scripting your way to a deployment. It works well for small setups where you want full control and transparency, but scaling across many machines requires you to encode that logic yourself. It's also stateful in a fragile way — Ansible applies changes to live servers, so drift and inconsistency can creep in.
#deploymentstrategies