¿Qué problema resuelve?
Cuando desarrollas una aplicación, puede que en tu computadora funcione perfecto, pero cuando la pasas a otro equipo o servidor... ¡boom! Errores por todos lados: que si falta una librería, que si la versión de Node es diferente, que si la base de datos no está bien configurada…
Docker evita todo eso porque:
Empaqueta tu aplicación junto con el sistema de archivos, las librerías, variables de entorno, puertos, etc.
Se ejecuta igual en cualquier lugar donde esté instalado Docker (Windows, Mac, Linux, servidores en la nube, etc.).