Skip to main content
AWS Fundamentals Tutorial
CHAPTER 21 Beginner

AWS ECS and Docker Basics

Updated: May 15, 2026
30 min read

# CHAPTER 21

AWS ECS and Docker Basics

1. Introduction

"It works on my machine!" This is the most famous excuse in software engineering. A developer writes code on their Mac, it runs perfectly, but when deployed to a Linux EC2 instance, the application crashes because a specific software version is missing. The industry solved this nightmare with Docker Containers. AWS solved the management of thousands of containers with Amazon ECS (Elastic Container Service). In this chapter, we will demystify the container revolution and learn how ECS orchestrates modern microservices.

2. Learning Objectives

By the end of this chapter, you will be able to:
  • Define what a Docker Container is and contrast it with a Virtual Machine (EC2).
  • Understand the purpose of a Docker Image and a Container Registry (ECR).
  • Understand the role of Amazon ECS as a Container Orchestrator.
  • Differentiate between the two ECS launch types: EC2 and Fargate.
  • Conceptually deploy a containerized application on AWS.

3. Beginner-Friendly Explanation

Imagine moving houses.
  • The Old Way (Virtual Machines/EC2): You hire a massive, heavy moving truck for a single couch. The truck takes a long time to start, consumes massive amounts of fuel, and wastes 90% of its space.
  • The New Way (Docker Containers): You put your couch into a standardized, lightweight shipping container. You put your TV in another container. You can stack 500 of these identical containers onto a single massive cargo ship.

A Docker Container packages your code, its dependencies, and its runtime environment into one standardized box. Because the box is standardized, it is guaranteed to run exactly the same way on your laptop, on a friend's laptop, and on an AWS server.

4. Docker Images and ECR

Before you run a container, you build an Image. An Image is the unchangeable blueprint of your application (e.g., a snapshot of an Ubuntu OS + Node.js + Your App Code). When you finish building the image on your laptop, you push (upload) it to a repository. AWS provides Amazon ECR (Elastic Container Registry). It is a highly secure, private storage vault specifically designed to hold your company's Docker Images.

5. What is Amazon ECS?

If you have 1 container, you can run it manually. If your company has 5,000 containers across 500 servers, you need a manager. Amazon ECS (Elastic Container Service) is a container orchestrator. You tell ECS: "I want 5 copies of the Web Container and 2 copies of the Login Container running at all times." ECS automatically finds servers with available RAM, places the containers there, connects them to the Load Balancer, and restarts them if they crash.

6. ECS Launch Types: EC2 vs. Fargate

Where do the containers actually run? ECS gives you two choices:
  1. 1. EC2 Launch Type: You manually launch a fleet of blank EC2 instances. You manage the underlying EC2 operating system updates. ECS simply drops the containers onto your EC2 instances. (Cheaper, but requires server maintenance).
  1. 2. AWS Fargate (Serverless Compute): The modern miracle. You do not launch any EC2 instances. You just hand the container to Fargate, and AWS magically runs the container on invisible, serverless infrastructure. You pay only for the exact CPU and RAM the container uses per second. (Zero server maintenance).

7. Mini Project: The ECS Deployment Workflow

Let's trace the architectural steps to deploy a containerized app using Fargate.

Step-by-Step Conceptual Tutorial:

  1. 1. Code & Build: On your laptop, write a Python web app. Write a Dockerfile (the blueprint). Run docker build to create the Image.
  1. 2. Push to ECR: Log into AWS CLI. Run docker push to upload your Image into your private Amazon ECR repository.
  1. 3. Create ECS Task Definition: In the AWS Console, go to ECS. Create a Task Definition (This is a JSON file that tells ECS: "Grab the image from ECR, and give it 1GB of RAM and 0.5 CPU").
  1. 4. Create ECS Cluster: A Cluster is the logical grouping. Choose the "AWS Fargate" template.
  1. 5. Create ECS Service: Tell the Cluster to run the Task Definition as a "Service". Specify "Desired Tasks: 2" (This tells ECS to keep exactly 2 copies running). Connect it to an Application Load Balancer.
  1. 6. Launch: AWS Fargate instantly provisions invisible compute power, pulls the image from ECR, starts the containers, and routes traffic. Your containerized app is live!

8. Best Practices

  • Microservices Architecture: Never put your Web Server and your Database into the same container. Containers should do exactly one thing. If the Web Server needs more power, ECS can scale the Web container to 10 copies while leaving the single Database container alone.

9. Common Mistakes

  • Storing Data in Containers: Containers are ephemeral (temporary). If an ECS container crashes, ECS instantly deletes it and spins up a brand new, fresh container from the Image. If your app saved a user's uploaded photo inside the container, it is permanently deleted! As always, applications must be Stateless. Save photos to S3 and data to RDS/DynamoDB.

10. Exercises

  1. 1. Why does a Docker container boot up in milliseconds, whereas a traditional EC2 Virtual Machine takes minutes?
  1. 2. Explain the fundamental difference between the ECS "EC2 Launch Type" and "AWS Fargate".

11. MCQs with Answers

Question 1

An engineering team wants to deploy hundreds of microservice Docker containers. They want an orchestrator to manage the placement and scaling of these containers, but they absolutely refuse to manage or patch any underlying server operating systems. Which AWS architecture should they choose?

Question 2

Which AWS service serves as a secure, private repository for storing, managing, and deploying Docker container images?

12. Interview Questions

  • Q: Define a Docker Container and contrast its architecture with a traditional Virtual Machine. Why does the phrase "It works on my machine" become obsolete when utilizing Docker?
  • Q: Walk me through the deployment pipeline of a containerized application in AWS. Specifically, detail the relationship between a Dockerfile, Amazon ECR, an ECS Task Definition, and an ECS Cluster.

13. FAQs

Q: Is ECS the same thing as Kubernetes? A: No! ECS is Amazon's proprietary container orchestrator. It is incredibly easy to learn and deeply integrated into AWS. Kubernetes (K8s) is a completely different, open-source orchestrator created by Google. It is vastly more complex, but it is the global industry standard. AWS offers a managed Kubernetes service called EKS, which we will cover next!

14. Summary

In Chapter 21, we entered the modern era of microservices by adopting Containerization. We learned how Docker standardizes code environments, eliminating deployment inconsistencies. We introduced Amazon ECR as our private image vault and Amazon ECS as our intelligent container orchestrator. Finally, we explored AWS Fargate, realizing the ultimate cloud luxury: running highly complex, scalable container architectures without ever provisioning a single EC2 server.

15. Next Chapter Recommendation

ECS is fantastic and simple, but the rest of the tech industry revolves around a massively complex open-source titan: Kubernetes. Proceed to Chapter 22: AWS EKS and Kubernetes Introduction.

Finish this Chapter

Save your progress on your learning path and prepare for coding interview challenges.

Discussion

Join the discussion

Log in or create a free account to participate.

Sort: ·