DEV Community

Christopher Booth
Christopher Booth

Posted on

An introduction to Docker - The development and deployment benefits

Docker Logo

What is Docker?

Docker is an open source containerization platform. This platform allows developers to package their applications into isolated containers that house all required application software, dependencies and configurations in one neat bundle. This improves the speed at which developers can collaborate on, test, and deploy a piece of software. Since containers are isolated from one another, users can even have multiple versions of the same software running simultaneously without conflicts.

Containers

A container is a way to package applications with all required dependencies and configurations. It is a portable software container that can be easily shared and moved among a development team. Overall they make the development and deployment process much more efficient.

Container Diagram

Since containers are portable, there is a storage system created that holds all containers called the container repository. These repositories can be private or public. Think of it as a GitHub for docker containers. Many of the public containers are available on https://hub.docker.com/ DockerHub, a resource that stores over 100,000 container images.

Containers Impact

Docker Architecture Diagram
Containers solve a lot of problems for development. Instead of setting up each machine identically for the development team to work on the same project (which can differ greatly based on operating system type and revision, and may have many steps that can lead to errors), developers can install the container and be up and running in a matter of a handful of minutes. The container is its own isolated development environment that houses all necessary dependancies. In comparison to the traditional installation steps, installation of a docker container is usually one command.

This approach of containers has many implications and simplifications for the deployment process as well. Traditionally, deployment happened in various steps. The dev team created applications with detailed instructions on how to install the application and configure it. The application typically also has a database attached to it that also needs detailed instructions for configuration. These two pieces of the puzzle must be handed off to the deployment team and they must prepare the server environment for the software. Again this may introduce many conflicts or errors due to differences in operating system, dependency versions / revisions, installation steps, etc. With docker, the teams are joined together and the only configuration needed for the server is the Docker Runtime binaries. The server can pull the container image down and run it much quicker and more reliably than traditional deployment.

In the next entry we will discuss how to get started with creating your own docker container images.

Top comments (0)