Trang chủ/Chương 11

Chương 11: Containers

Tổng Quan

Containers đóng gói ứng dụng + dependencies thành đơn vị chạy nhất quán trên mọi môi trường. AWS cung cấp nhiều dịch vụ để chạy và quản lý containers.


1. Docker Basics (Ôn nhanh)

  • Docker Image: Bản thiết kế (blueprint) chứa code + dependencies.
  • Docker Container: Instance đang chạy từ Image.
  • Dockerfile → Build → Image → Run → Container.

2. Amazon ECS (Elastic Container Service)

2.1 Hai Launch Types

EC2 Launch TypeFargate Launch Type
Quản lýBạn quản lý EC2 instancesAWS quản lý hoàn toàn (Serverless)
ScalingTự cấu hình ASGTự động
PricingTrả tiền EC2 instancesTrả theo vCPU + RAM sử dụng
Use caseCần control, spot instancesĐơn giản, không muốn quản lý infra

2.2 Các khái niệm ECS

Khái niệmMô tả
Task DefinitionJSON blueprint: image, CPU, RAM, ports, IAM role
Task1 instance đang chạy của Task Definition
ServiceĐảm bảo X tasks luôn chạy, tích hợp ELB
ClusterNhóm ECS instances/Fargate chạy tasks

2.3 ECS IAM Roles

  • EC2 Instance Profile (EC2 Launch Type): Cho ECS Agent gọi ECS API, pull image từ ECR.
  • ECS Task Role: Quyền cho mỗi task riêng biệt (VD: Task A gọi S3, Task B gọi DynamoDB).

2.4 ECS + Load Balancer

  • ALB: Được khuyến khích (hỗ trợ dynamic port mapping).
  • NLB: Cho high throughput hoặc khi cần static IP.

3. Amazon ECR (Elastic Container Registry)

  • Lưu trữ Docker images trên AWS (tương tự Docker Hub).
  • Private hoặc Public repositories.
  • Tích hợp với ECS/EKS — pull images trực tiếp.
  • Hỗ trợ image vulnerability scanning.

4. Amazon EKS (Elastic Kubernetes Service)

  • Managed Kubernetes trên AWS.
  • Kubernetes là tiêu chuẩn ngành cho container orchestration.
  • Hỗ trợ cả EC2Fargate launch types.
  • Use case: Khi team đã dùng Kubernetes, cần portability (chạy on-premises hoặc cloud khác).

ECS vs EKS

ECSEKS
Công nghệAWS proprietaryKubernetes (open-source)
PortabilityChỉ AWSMulti-cloud, on-premises
Learning curveĐơn giản hơnPhức tạp hơn
Best forTeam mới với containersTeam đã biết Kubernetes

5. AWS App Runner

  • Dịch vụ đơn giản nhất để deploy containers hoặc source code.
  • Chỉ cần cung cấp container image hoặc source code → App Runner làm hết.
  • Auto-scaling, load balancing, encryption, health checks.
  • Use case: Web apps, APIs, microservices — khi không cần kiểm soát sâu.

Exam Tips 💡

  1. Fargate = Serverless containers. Không muốn quản lý EC2 → chọn Fargate.
  2. ECS Task Role ≠ EC2 Instance Profile. Task Role cho quyền ở task level.
  3. EKS khi đề nói "Kubernetes", "multi-cloud", "portability".
  4. ECR lưu Docker images. Tích hợp native với ECS/EKS.
  5. App Runner = giải pháp đơn giản nhất, không cần biết infra.

Câu Hỏi Ôn Tập 📝

Câu 1: Team muốn chạy containers mà không cần quản lý servers. Dùng gì?

Xem đáp án

Amazon ECS với Fargate launch type hoặc EKS với Fargate. Fargate là serverless — AWS quản lý hoàn toàn infrastructure.

Câu 2: Mỗi ECS task cần quyền AWS khác nhau (Task A → S3, Task B → SQS). Cấu hình bảo mật thế nào?

Xem đáp án

Gán ECS Task Role riêng biệt trong mỗi Task Definition. Task Role cấp quyền IAM ở mức từng task, không phải toàn bộ EC2 instance.


⬅️ Chương 10: Serverless | Chương 12: Decoupling & Messaging ➡️