Docker has been one of the most talked-about technologies of 2016 and for a good reason. Docker’s adoption rate is continuously increasing as it’s developed and now prime for production use. For developers and system administrators Docker might sound scary and daunting but once you get into it you realise the learning curve is not very steep. In this post we explain what Docker is, then walk through why it’s beneficial to use for development and operations.

So Docker, What Is It?

Docker is an open-source project that automates the development, deployment and running of applications inside isolated containers. Containers allow developers to bundle up an application with all of the parts it needs, such as libraries and other dependencies, and ship it as one package.

At this point you might be wondering what a Container is. Docker explains the concept;

Using containers, everything required to make a piece of software run is packaged into isolated containers. Unlike VMs, containers do not bundle a full operating system - only libraries and settings required to make the software work are needed. This makes for efficient, lightweight, self-contained systems and guarantees that software will always run the same, regardless of where it’s deployed.

Using Docker, developers can focus on writing code without worrying about the system on which their code will run. Applications become truly portable. You can repeatably run your application on any other machine running Docker with confidence. On the operations side of things, Docker is lightweight, easily allowing the running and management of applications with different requirements side by side in isolated containers. This flexibility can increase resource use per server and may reduce the number of systems needed because of its lower overhead, which in turn reduces cost.

What Can I Gain By Using Docker?

The three main reasons to use docker are; isolation, consistency and speed.

1. Isolation

Each Docker container that’s running is isolated from the network, the file system and other running processes. Docker allows you to isolate an application and its dependencies into a self-contained unit that can run anywhere.

2. Consistency

Docker provides a consistent environment for your application from development all the way through production. A Docker Image used for development can be deployed in production without any changes and will perform as expected.

3. Speed

Because Docker Images are pre-configured with all the pieces of software, the application and it’s dependencies. This means there’re no further configuration changes required once deployed to production.

Conclusion

When you have your application in a Docker container, you can be sure that the code you’re testing locally is exactly the same build artifact that goes into production. There are no changes in application runtime environments. That makes Docker an exceptional tool all the way from development through production.

At AltoStack, our experts can maintain your DevOps platform and be responsible for day-to-day operational issues, allowing you to develop and ship your product without the need for internal DevOps hires.