ATOM, 8 characters, 12 bytes
1🕳️{🖨️**2}
Explanation:
{🖨️**2}
is a controller (function) that takes a number as input, multiplies it by 2, prints the result, and returns the new number as well. The first star is parsed atas the input to the controller, and the second star is parsed as the multiplication operation.
🕳️
A while loop, it submits the result of the controller back into itself until it gets a 0.
Note:
ATOM is a living language with updates happening time to time, but this program works on the version of the language before this question was posted.