The first use case is one of my focus areas at work. We used to not be able to do functional testing until code was in the develop branch. Developers could work on feature branches, but we had no way of deploying these branches to a test environment. The develop branch usually wasn't in a state where we could safely cut releases from it, in effect every release a was train release. Departing early required coordination among multiple product teams to make sure everything was completely tested.<p>Now, we have a customized version of dockerui (<a href="https://github.com/crosbymichael/dockerui" rel="nofollow">https://github.com/crosbymichael/dockerui</a>) set up with images fed by jenkins. Every branch has images generated and anyone can spin up their own complete test environment. As a result we can complete a lot more testing in isolation and keep the develop branch ready for release at any time.