Loosely related: Why of all units is Time standard?
It's pretty obvious why 0:00/12:00am is called "midnight". What is the history behind setting the 0 time in the middle of the night as opposed any other "time" of the day?
Some societies use sunset as the end of one day, and the start of the next: this is recorded in Genesis, chapter 1; for example, the Athenians, or see the Jewish civil day
Some traditional agricultural societies start the day with dawn, but Roman civil society defined the day as beginning at midnight. The day was divided into ante meridiem (am) and post meridiem (pm), where the meridian refers to local noon. Twelve hours later is midnight, the sixth hour of the night, and the beginning of the next day.
Additional information is available at Roman Time Keeping, including the calendar. The Roman's borrowed their system from the Greeks, who in turn had learned it from the Babylonians.
Western European timekeeping conventions come directly from Roman practices, and have spread around the world in recent times, but are not universal.
As pointed out in the comments, we used the ships bells when I was a sailor, though the official time was a 24 hour clock, GMT and local.
The natural clock on which all systems of time reckoning are based is the Sun. Noon is an astronomically defined event (does not depend on any convention): it is the upper culmination of the Sun. Midnight is similarly defined, it is the lower culmination. The lower culmination is not a visible event in most latitudes, most of the time. So there are two natural choices of the beginning of the day. Both were used. It is clear why noon is inconvenient for practical purposes. This is why we use midnight.
The day hasn't always started at midnight.
Up to late 1805 the Royal Navy used three days: nautical, civil (or "natural"), and astronomical. A nautical day entered in a ship's log as 10 July, for example, in fact commenced at noon on 9 July civil reckoning, PM therefore coming before AM. The astronomical day of 10 July, on the other hand, commenced at noon of 10 July civil reckoning, and ended at noon on 11 July. The astronomical day was brought into use following the introduction of the Nautical Almanac in 1767, and the British Admiralty issued an order ending the use of the nautical day on 11 October 1805. The US did not follow suit until 1848, while many foreign vessels carried on using it until the 1880s.