Introduction to Docker

What is Docker?

        Docker is a software platform that allows you to build, test, and deploy applications quickly. Docker packages software into standardized units called containers that have everything the software needs to run including libraries, system tools, code, and runtime. AWS supports both Docker licensing models: open source Docker Community Edition (CE) and subscription-based Docker Enterprise Edition (EE).

Docker Benefits

  • Ships More Software Faster- Docker users on average ship software 7x more frequently than non-Docker users. Docker enables developers to ship isolated services as often as needed by eliminating the headaches of software dependencies.
  • Improve Developer Productivity- Docker reduces the time spent setting up new environments or troubleshooting differences between environments.
  • Seamlessly Move Applications- Docker-based applications can be seamlessly moved from local development machines to production deployments on AWS.
  • Standardize Application Operations- Small containerized applications make it easy to deploy, identify issues, and rollback for remediation.

What it’s Used For

        Docker’s container services allow for simplicity of tasks, that otherwise may seem complicated if stored in a different manner.  Docker provides Continuous Integration and Delivery through accelerating application delivery by standardizing environments and removing conflicts between language stacks and versions.  It also is used for Data Processing since it literally has ‘big data processing’ as one of it’s services. It can package data and analytics packages into portable containers that can be executed by non-technical users. Finally, you can use the containers as their own service. By this, I mean you can build and ship distributed applications with content and infrastructure that is IT- managed and secured.

How it works

  1. Now the first step in getting started with Docker is actually installing Docker onto an Amazon Linux Instance.  It’s available for pretty much all operating systems like Mac and Windows as well. Here are some well-document steps from Amazon: http://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.html
  2. The next step is optional, but the user can also either create a docker hub account or Amazon EC2 Container Registry.  The Docker hub has the most common image repository and the default depository as well.  It gives you the freedom to store your modified images so you can use them in your ECS task definitions.
  3. The third step is to create a Docker image and upload it to the Hub or registry. Amazon ECS task definitions use Docker images to launch containers on the container instances in the clusters.
  4. Once the image is finished, it can now be used to run tasks in your Amazon ECS task definitions.

 

Case Studies

Lyft- Using Docker, its developers were able to test and deploy features independently, while effectively managing communication between microservices. This resulted in faster and more efficient development and delivery. Lyft now uses Docker to manage their continuous integration chain, as well as for testing.

BBC News- For the news division of BBC, the problem was largely one of speed and volume. BBC News delivers broadcast and online news in almost 30 languages, with over 80,000 daily news items in English alone. It ran more than 26,000 jobs in ten different (and difficult to modify) continuous integration environments with sequential scheduling, resulting in a chronic logjam, and a combined wait and run time of up to 60 minutes per job. Docker allowed BBC News to eliminate job wait times, and run jobs in parallel. It also gave developers a flexible continuous integration environment that is easy to work with, and which allows much greater control over such factors as application architecture.