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.
Recent announcements: Docker collaborates with AWS to help developers speed delivery of modern apps to the cloud. This collaboration helps developers use Docker Compose and Docker Desktop to leverage the same local workflow they use today to seamlessly deploy apps on Amazon ECS and AWS Fargate. Read the blog for more information.
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. The recent collaboration between AWS and Docker makes it easier for you to deploy Docker Compose artifacts to Amazon ECS and AWS Fargate.
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: 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 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. Customers can easily deploy their containerized applications from their local Docker environment straight to Amazon ECS. 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.