They are a method of OS virtualization that allows you to run an app and its dependencies in resource-isolated processes.
They package an app’s code, configurations, and dependencies into building blocks.
This delivers better environmental consistency, operational efficiency, developer productivity, and version control.
Container doesn’t have a hypervisor requirement, making them extremely portable: your laptop, your EC2, your virtual machine, and your bare metal server are all potential hosts for the same container. Also, because the processes are talking directly to the kernel, most container boot in just a couple of seconds.
Orchestrates the execution of containers. This means it:
Maintains and scales the fleet of nodes running your containers
Removes the complexity of standing up the infrastructure
Monitors deployment of your containers
Schedules containers using its built-in scheduler or a third-party scheduler (e.g., Apache Mesos, Blox)
Is extensible via APIs
Can scale up to thousands of containers, including automatically via Auto Scaling
Can leverage Spot and Reserved Instances
A fully managed container service for Amazon ECS and Amazon ECS for Kubernetes
Provisions and manages clusters for you
Manages runtime environments