The incident happened at the Packer Marine Terminal in the 3300 block of South Christopher Columbus Boulevard around 2:30 a.m.
Rescuers say the 38-year-old worker was helping unload large containers from the hold of a ship when one of them shifted and pinned the man against another container.
The worker was rushed to the hospital.
The name of the worker has not been released.
The incident remains under investigation.