Cars were burned and a shopping centre partly set alight in the Breil neighbourhood as police confronted young people, some armed with molotov cocktails.
The circumstances in which the man was killed are being investigated by the police.
The incident occurred around 8:30pm when police stopped a vehicle over an infraction, local police chief Jean-Christophe Bertrand said.
The identity of the driver was "not clear and officers received orders to bring the driver to the police station." The driver then hit and slightly injured a police officer, he added.
"One of his colleagues then fired, hitting the young man who unfortunately died," he said.
Police sources confirmed the young man was wounded during a police check while in a vehicle after he "refused to comply" with police requests.
He was hit in the carotid artery and declared dead on arrival at hospital, the police sources said.
National police are investigating to clarify "the facts and determine in what circumstances the policeman used his weapon," said Pierre Sennes, the public prosecutor for Nantes.
Steven, 24, who lives in the area, told an AFP news agency journalist that he had "heard explosions" and headed to investigate.
"I saw everything burning. There were fires in the bins, the cars. They were breaking everything. It lasted ages," he said, adding that things later calmed down.
Violence also broke out in two other sensitive areas, Dervallieres and Malakoff, where vehicles were also set on fire.
Police reinforcements are expected in Nantes, especially in the Breil neighbourhood, which was already on high alert after an incident last week possibly involving a military weapon, according to a source close to the case.