The fire started sometime after 4 p.m., and thick plumes of black smoke were visible miles away.
Marina manager David Franklin said his staff first noticed the flames at about 4:15 p.m.
"We went down and took a look at things," Franklin said. "One boat was on fire at that time -- fully engulfed -- and it was spreading to adjacent boats."
Skagit County firefighters are on scene and working to extinguish the fires from land and with help from a fire boat.
The marina has a total of 10 docks, and Franklin said the fire quickly spread from the J dock to others.
"In a marina, you tend to put things close together because space is money, so boats are tied up to other boats. It didn't surprise me at all how rapid the fire ended up spreading," Franklin said.
He said at least 20 boats will likely be completely destroyed, but he didn't have an estimate for what the financial loss will be.
"There were some very nice boats involved," he said. "When you start talking about 20 large boats, the guess as far as the amount of damages and what they'll cost is anyone's guess. We'll know more when the smoke clears."
So far there are no reports of any injuries.
The Shelter Bay Marina is located within a private, gated community situated on the Swinomish Channel just across from La Conner, according to the marina website.