That's why you keep everything with state in a separate volume container. Attach volume to built image and that's it.
For pg, there might be some migration needed when jumping from a major version to the next. Which requires both versions installed, on Debian at least.
Many programs have their state represented as files that are stable across versions. If you have a cluster of the same image with different states it's more efficient to move volume containers across a network. Easier to backup/upgrade too.
pg is going to give you those problems whether you are using Docker or not.