Over 2 years after this is still unsanswered, and you've probably rebuilt your image a thousand times meanwhile. Anyway, I was thinking about this question, actually you cannot commit and runa new image because the EXPOSE directive will be in use when you'll run it again. But, you could possibly avoid rebuilding from scratch doing a commit and using the new image as a base for a new Dockerfile..
I'm not thinking this is a great solution but yes, sometimes you just need a fix, even if far from being "the state of the art" (also, I didn't tried this myself but I don't see why it shouldn't work).
Basically, first you commit your current image into a new one:
docker commit mysql_server new_mysql_server
Then you create a minimal new Dockerfile using your previous image, something like:
FROM new_mysql_server
EXPOSE 80 (or just remove EXPOSE)
ENTRYPOINT ["/what/ever"]
Then you build it
docker build -t cmysql_server .
Stop/Cleaning images and previous containers is optional, eventually you should have a new image without the additional port.
Even though you don't need this answer anymore, I hope it could be a useful suggestion for somebody else.
Cheers!