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. Using Docker, you can quickly deploy and scale applications into any environment and know your code will run.
Running Docker on AWS provides developers and admins a highly reliable, low-cost way to build, ship, and run distributed applications at any scale. AWS supports both Docker licensing models: open source Docker Community Edition (CE) and subscription-based Docker Enterprise Edition (EE).
How Docker works
Docker works by providing a standard way to run your code. Docker is an operating system for containers. Similar to how a virtual machine virtualizes (removes the need to directly manage) server hardware, containers virtualize the operating system of a server. Docker is installed on each server and provides simple commands you can use to build, start, or stop containers.
Why use Docker
Using Docker lets you ship code faster, standardize application operations, seamlessly move code, and save money by improving resource utilization. With Docker, you get a single object that can reliably run anywhere. Docker's simple and straightforward syntax gives you full control. Wide adoption means there's a robust ecosystem of tools and off-the-shelf applications that are ready to use with Docker.
Ship More Software Faster
Docker users on average ship software 7x more frequently than non-Docker users. Docker enables you to ship isolated services as often as needed.
Small containerized applications make it easy to deploy, identify issues, and roll back for remediation.
Docker-based applications can be seamlessly moved from local development machines to production deployments on AWS.
Docker containers make it easier to run more code on each server, improving your utilization and saving you money.
When to use Docker
You can use Docker containers as a core building block creating modern applications and platforms. Docker makes it easy to build and run distributed microservices architecures, deploy your code with standardized continuous integration and delivery pipelines, build highly-scalable data processing systems, and create fully-managed platforms for your developers.
Build and scale distributed application architectures by taking advantage of standardized code deployments using Docker containers.
Continuous Integration & Delivery
Accelerate application delivery by standardizing environments and removing conflicts between language stacks and versions.
Provide big data processing as a service. Package data and analytics packages into portable containers that can be executed by non-technical users.
Containers as a Service
Build and ship distributed applications with content and infrastructure that is IT-managed and secured.
Docker frequently asked questions
Q: Is Docker free?
Docker Community Edition (CE) is free for anyone to use. This version of Docker is open source and can be used on a variety of platforms including Windows, Mac, and Linux. You can install Docker CE yourself on your computer or an Amazon EC2 virtual machine instance, or start using it immediatly with the Amazon ECS-optimized AMI.
Docker Enterprise Edition (EE) adds additional features for workflow management and security and is a paid subscription available through the AWS Marketplace.
Q: What can I do with Docker?
Using Docker, you can quickly deploy and scale applications into any environment and know your code will run. You can do this because Docker packages software into standardized units called containers that have everything the software needs to run including libraries, system tools, code, and runtime.
Q: What is a Docker Image?
A Docker image is a read-only template that defines your container. The image contains the code that will run including any definitions for any libraries and dependancies your code needs. A Docker container is an instantiated (running) Docker image. AWS provides Amazon Elastic Container Registry (ECR), an image registry for storing and quickly retrieving Docker images.
Q: What is the difference between Docker Swarm, Kubernetes, and Amazon ECS?
When you want to run lots of Docker containers, orchestration tools like Docker Swarm, Kubernetes, and Amazon Elastic Container Service (ECS) make it possible to start, stop, and monitor thousands (or millions) of containers.
Docker Swarm is container orchestration software made by Docker that you run and manage yourself. Kubernetes is a popular open source, community maintained container orchestration software that you run and manage yourself. Amazon EKS makes it easier to run Kubernetes on AWS by providing managing the Kubernetes control plane for your containers. Amazon ECS is a fully managed AWS service that makes it easy to run containers on AWS with deep integrations to AWS services such as VPC, load balancing, service discovery, and IAM roles.
Q: What is the difference between Docker and a virtual machine?
Virtual machines (VMs) virtualize (or remove the need to directly manage) server hardware while containers virtualize the operating system of a server. Docker is an operating system (or runtime) for containers. The Docker Engine is installed on each server you want to run containers on and provides a simple set of commands you can use to build, start, or stop containers.
Run Docker on AWS
AWS provides support for both Docker open-source and commercial solutions. There are a number of ways to run containers on AWS, including Amazon Elastic Container Service (ECS) is a highly scalable, high performance container management service. AWS Fargate is a technology for Amazon ECS that lets you run containers in production without deploying or managing infrastructure. Amazon Elastic Container Service for Kubernetes (EKS) makes it easy for you to run Kubernetes on AWS. AWS Fargate is technology for Amazon ECS that lets you run containers without provisioning or managing servers. Amazon Elastic Container Registry (ECR) is a highly available and secure private container repository that makes it easy to store and manage your Docker container images, encrypting and compressing images at rest so they are fast to pull and secure. AWS Batch lets you run highly-scalable batch processing workloads using Docker containers.
Docker EE provides a platform for enterprise container management and security that is optimized for Amazon EC2 environments
Docker EE is available as a subscription from the AWS Marketplace. Already have a Docker EE license? Launch on AWS with Docker EE Standard.