It absolutely boggles my mind that read-only mode is not the default in Docker. By default, every container has an extra, unnamed, writable volume: its own root. Typo in your volume mount? You’re writing to root, and you will lose data.
Of course, once this is fixed and you start using read-only containers, one wonders why “container” exists as a persistent, named concept.