I attached an example, a screenshot of it's network and a thumb of the texture used.
It's fairly simple... just multiply the color function, in this case the image map, and your density shader and that's it. Just make sure you're using multiply
color (or multiply vector).
I haven't had the chance to do more testing yet, but as far as I know now, the brightness of the supplied color function (the length of the vector) is used as the density function. (This means you can't vary the brightness of the cloud using a function.)
The color set in the cloud's preferences affects the final outcome of the colors in the rendered image too. I guess they are multiplied as usual.
My test uses a single texture for the whole rainbow, projected onto a thin cloud sphere. It's far from perfect, but I think you could make a nice rainbow if you use all the other techniques described and/or used in bigben's project. Most important: reading colors from an image is basically the fastest method of "computation". And you don't need 3 cloud layers anymore. This could speed things up.