A container is a standardized, isolated software environment that packages an application with the libraries, frameworks, and runtime it needs. Treat it as a lightweight virtual machine: launch it from an image and run the same workload locally, on-premises, or in the cloud. section 18.1
Containers support practical deployment goals:
- Reduce environment differences behind the familiar “works on my machine” problem. section 18.1
- Support continuous deployment by shipping the same image to test or production systems. section 18.1
- Enable immutable servers: create a new image for changes and replace servers launched from the previous image. section 18.1
- Improve portability, while still requiring work to integrate the workload with the target infrastructure. section 18.1
Deploying a web server on AWS
A containerized web server can run on AWS App Runner, or fit a broader architecture using Elastic Container Service, Fargate, an Application Load Balancer, and S3. App Runner provides the simplest path in this set, while ECS and Fargate support a more configurable architecture without requiring virtual-machine management. section 18.0
Compare the high-level relationship between virtual machines and containers. section 18.1


























