Cook was dismissed for 16 to leave him 20 runs short of becoming the first Englishman to 10,000 runs in Test cricket.
Hampshire’s James Vince was unable to make a big impression on his England Test debut as he fired just nine runs.
England fell to 83 for five before Alex Hales was joined by Jonny Bairstow.
They put together a partnership of 88 runs until rain stopped play.
Their efforts rescued what had been a miserable start for the hosts.
Sri Lankan debutant Dasun Shanaka ripped through the top order with three wickets on his Test debut, helped by a couple of poor shots from Cook and Joe Root.
A Test best score of 71 not out from opener Hales and a much brisker unbeaten 54 from Yorkshireman Jonny Bairstow dragged their side back to 171 for five before the bad weather swept in at tea.
Not a ball was bowled in the evening session on a day when grey cloud cover had first tempted the tourists to put England in and then offered significant assistance as they sought to repeat their famous victory here two summers ago.
Cook had come into the match needing just 36 runs to become the first Englishman – and the youngest man in history – to pass 10,000 Test runs.
In a sedate first hour he looked likely to ease past that landmark, even as the runs were slow to come.
But after a prolonged period without the strike he drove at a wide one from Shanaka to be caught behind for just 16, his disappointment evident as he trudged back to the pavilion.
The record will come, quite possibly in England’s second innings, and Cook has all summer to break Sachin Tendulkar’s mark as the youngest past the milestone.
But the captain’s dismissal changed the mood around this revamped ground.
Compton and Root both fell for ducks and Vince was forced to wait a painful 18 deliveries to get off the mark.
He made it to lunch but could not profit beyond, falling for nine when he sliced a drive off Shaminda Eranga to Mendis at third slip.
And Ben Stokes also struggled as he fell for just 12.