A Polish boat rescued the dog from an ice floe that had carried him more than 100km up a river and out on to the icy waters of the Baltic Sea.
"My crew saw. . . a shape moving on the water and we immediately decided to get closer to check if it was a dog or maybe a seal relaxing on the ice," Jan Joachim, senior officer aboard the Baltica, said Television.
"As we got closer to the ice floe we saw that it was a dog struggling not to fall into the water."
Ship engineer Adam Buczynski managed to scoop the dog off the floe on to an inflatable dinghy and wrapped him in a blanket.
"He didn't even squeal. There was just fear in his big eyes," said Buczynski.
The dog was first seen on the ice floe some 100km inland to the south on the Vistula river but firemen were unable to rescue him. When the Baltica crew found him, he had already drifted some 24km out to sea.
"We were in the right place at the right time," said Joachim, noting that they rescued him shortly before night fall.
The crew are now trying to locate the dog's owner.
Poland is in the grip of bitterly cold weather, with night temperatures in some areas falling as low as -34 Celsius (-31 Fahrenheit).