Docker has quickly become the standard in containerization for enterprises of all sizes. Thanks to its wide ranging community and industry support, there's a lot you can do with Docker but we've found that there are some pretty common use cases that keep coming up and providing significant value to our clients.
Deployment Made Easy
Many organizations have been taking advantage of Heroku's Git deployment features as a key part of their DevOps workflows. The key is that developers can deploy their own code to development or staging instances with a simple
git push and to production with as little as an accepted pull request. We accomplish this with an open-source tool called Dokku that is built on and works with Docker. It's also possible to accomplish this with just Docker and Git webhooks if you prefer not to use Dokku. The key to this Git-based deployment strategy is that you can rollback your deployments simply by rolling back Git commits. On the more advanced side, it's possible to take advantage of Git tags to get a little more granular in your deployments. All of this is powered by Docker.
Servers and compute resources are certainly far less expensive than they were even five years ago, but they are certainly not free at scale. Many IT organizations have turned to virtual machines to host multiple applications on one physical box. The problem with virtual machines is that they are extremely wasteful. Because they virtualize an entire instance of the whole operating for each virtual instance, wasting memory and processing resources. Docker takes a different approach. Instead of dedicating the machine's resources to specific virtual machines, Docker creates containers that share the server's resources as needed. The Docker team has put together a great to help visualize this:
You can clearly see that the legacy virtual machine approach has more overall overhead.In real terms, this means that with Docker you should be able to host more applications on the same physical servers, lowering your overall IT operations costs.
App Environment Isolation
Let's say that you have two Ruby applications that don't use a lot of resources but require slightly different versions of Ruby and various gems. Hosting them both on one server would in the past have required two virtual machines to be created just to have two different Ruby environments up; it's an important note that this is not a Ruby problem and is the same with say Node, PHP, and basically every other development platform. With Docker you simply have two containers with each of them requiring the specific versions of Ruby and gems. Basically, you satisfy the business need of having both applications on one box without incurring the overhead of running two virtual machines.
With the right technology partner your organization can start to gain these and many other advantages of Docker right now! If you're interested in seeing how Buccaneer and Docker can help you, please take advantage of our free
Docker Strategy Session! Enjoyed these software tips? Follow us on Twitter, Facebook, and Youtube.