Cycles smoke always better in viewport compared to render
You need to bake the simulation. Click on the smoke domain wile the domain is selected go to the camera  properties tab and scroll down to the bake take. Set your simulation range to the number of frames in your animation and press bake all dynamics (or bake all). Then render and enjoy... Make sure you add emission to the smoke to make it pop a bit!