These days, everything is moving to virtual. Virtual reality, virtual machines, and with Docker, virtual filesystems. Actually, Docker is not virtual, it’s very real and is a very convenient way to package an entire filesystem and run it on any supported system. Why is this good? How can it help your DevOps? Hopefully this blog post will answer those questions.
Setting up a virtual machine is pretty easy. You install your software to host the machine, whether it be VMWare or VirtualBox, create a machine, install the OS and you’re on your way. We typically do this so we can run a specific application, maybe a web server, or database. But, what if we wanted to run a whole suite of applications, like a DevOps build and continuous integration solution and then distribute that to various sites around your organization? This is where Docker comes in. Docker allows you to package up that solution, distribute it in an image file, and then run it. It can run within your own infrastructure or in the cloud. You can have multiple Docker containers running separate apps on the same machine, and they’re all in their own isolated environment.
Sounds pretty great, but how can it help you? Docker allows you to quickly distribute an application or solution without the hassle of having of having to setup a virtual (or physical) machine. It saves you a LOT of time. You can actually have 3 separate development environments on one single machine! A Docker container for dev, a container for QA, and a container for production. In the past, you’d typically setup 3 different machines for these environments. Now you don’t have to, and you can even host these in the cloud, so development can happen anywhere in the world.
I’m focusing on DevOps, because that’s where Docker is being used the most. Imagine your company produces 5 mobile apps. All 5 are managed by different developers and have different delivery requirements. With traditional DevOps systems, you would most likely have to setup 5 different servers with all of the applications that would support development (i.e. Git, Jenkins, Rundeck, Chef, etc.). With Docker, you can setup 1 machine, and have 5 separate DevOps environments. This is a much better use of resources! Your developers can get what they need to do their job and not have to worry about conflicting with others and their preferences. This translates to faster delivery, better productivity, and reduced cost to you.
Docker is the next “big thing” for DevOps, and with it utilized in your infrastructure, you can develop, test, and deliver your software applications much faster than a more traditional software development environment. In my next post, I’ll show a real world example of deploying an entire application suite in a Docker image and how easy it is to make changes and re-deploy. If you have any questions about Docker, feel free to leave a comment!
Sr. Integration Engineer
SPK & Associates