Handle Docker exceptions without explanation attribute (#12570)
## Summary
- add a helper to extract readable messages from Docker exceptions
without relying on `explanation`
- reuse the helper when wrapping Docker errors so BuildAppError always
gets a message and fix a typo in exception handling
## Fixes
https://read-the-docs.sentry.io/issues/4883886678/
https://read-the-docs.sentry.io/issues/5030265593/
------
[Codex
Task](https://chatgpt.com/codex/tasks/task_e_69148da42d508320a9d619e573596b09)