The puncture was about six feet above the water line and there were no injuries, the South Florida Sun-Sentinel reported.
Enchantment of the Seas, a Royal Caribbean Cruises liner, was moored at Pier-B near the Hilton Pier when the accident occurred, the Coast Guard said.
Michael Sheehan, a spokesman for Royal Caribbean, said there were 2,040 passengers and 741 crew members on the ship when it was hit.
Sheehan said repairs had already begun the the ship was expected to depart later Friday as scheduled.
It is on a four-day cruise that includes a stop in Cozumel, Mexico, before returning home to Fort Lauderdale, Fla., Monday.
The Coast Guard said it is investigating the cause of the accident.