No financial details were disclosed but British media reported that City would pay Rennes around 55 million pounds ($69.42 million) for the 21-year-old.
"This is a great day for me, both personally and professionally," Doku told the club website.
"I am a young player with so much learning and improving to do. Working with (manager) Pep (Guardiola) and his staff, and playing alongside these world-class players, will make me a much better player. I feel sure of that.
"Watching City last season was amazing. To win the Treble is the hardest thing in football and they did it. You cannot imagine how exciting it is to be joining this team."
Doku joined Rennes in October 2020 from Belgium’s Anderlecht, making more than 90 appearances for the French side in all competitions and scoring 12 goals.
He becomes City’s third signing of the close season after Croatia midfielder Mateo Kovacic and defender Josko Gvardiol arrived at the Etihad Stadium earlier this summer as the treble winners consider a move for Crystal Palace midfielder Eberechi Eze.
"Jeremy is a very exciting young player and I’m so pleased he’s joining us," City’s Director of Football Txiki Begiristain said.
"In terms of raw attributes, he has everything a winger needs. He has outstanding pace and he is exceptional in one-on-one situations.
"I honestly believe working with Pep and the technical staff here at City will see him develop into a world-class attacking talent."
Doku made his debut for Belgium in September 2020 in a 2-0 Nations League win over Denmark.
He was called up for the 2022 World Cup in Qatar, making one appearance off the bench before Belgium were eliminated in the group stage.
Additional reporting from PA