🚀 TỔNG HỢP KIẾN THỨC DOCKER – ECS – FARGATE – EKS – ECR – APP RUNNER
Trong kiến trúc hiện đại, đặc biệt khi làm DevOps, Cloud, Microservices, các ứng dụng cần được triển khai theo cách nhanh – linh hoạt – nhất quán. Bộ công cụ chính là containers và hệ sinh thái container của AWS.
🌟 1. Docker là gì?
Docker là một nền tảng triển khai ứng dụng bằng container.
Container giúp ứng dụng chạy đồng nhất ở mọi môi trường, từ máy dev, máy test, đến production.
Lợi ích quan trọng của Docker:
Container = ứng dụng + dependency → đóng gói gọn nhẹ → chạy ở mọi nơi.
🌟 2. Docker Images được lưu ở đâu?
Docker images được lưu trong Docker Repository.
Có hai loại chính: ✔ Docker Hub
ECR thực chất được lưu nội bộ bằng S3 của AWS.
🌟 3. Docker vs Virtual Machines
Docker không phải là máy ảo.
Điểm khác nhau:
Docker mang tính ảo hóa nhưng không ảo hóa cấp OS như VM.
🌟 4. Quy trình làm việc với Docker
Dựa theo tài liệu:
AWS cung cấp toàn bộ công cụ để tự động hóa chu trình này.
🌟 5. Quản lý Docker Containers trên AWS
AWS có 4 dịch vụ container chính:
ECS và EKS là “orchestrator” — tức là chúng quản lý cách container chạy, scale, restart…
🌟 6. Amazon ECS – EC2 Launch Type
ECS = Elastic Container Service.
Ở chế độ EC2 Launch Type:
Khi cần scale số lượng task → bạn phải scale cả số lượng EC2.
🌟 7. Amazon ECS – Fargate Launch Type
Fargate là serverless cho containers.
Dùng Fargate = không còn phải chăm sóc server.
🌟 8. IAM Role trong ECS
Có 2 loại chính: ✔ EC2 Instance Profile (chỉ dùng cho ECS EC2 Launch Type)
Dành cho ECS Agent để:
Ví dụ: một task truy cập S3, task còn lại truy cập DynamoDB.
🌟 9. Load Balancer cho ECS
ECS hỗ trợ:
ECS tích hợp sâu với ALB để routing container linh hoạt.
🌟 10. ECS + EFS (Data Volumes)
Container trong ECS có thể mount EFS để lưu dữ liệu dùng chung.
Use case: app cần storage dùng chung giữa nhiều container.
🌟 11. ECS Service Auto Scaling
ECS có 3 cơ chế scale:
Lưu ý: ECS task scaling ≠ EC2 auto scaling.
Fargate thì đơn giản vì không có EC2.
🌟 12. EC2 Launch Type Auto Scaling
Để ECS Service scale được, bạn phải scale cả EC2 bên dưới:
🌟 13. ECS kết hợp EventBridge
ECS Tasks có thể được kích hoạt:
Rất phù hợp cho xử lý batch hoặc event-driven.
🌟 14. Amazon ECR – Kho lưu trữ image của AWS
ECR lưu trữ toàn bộ Docker images.
Tính năng:
🌟 15. Amazon EKS – Kubernetes Managed
EKS giúp bạn chạy Kubernetes trên AWS mà không cần tự setup control plane.
Đặc điểm:
EKS Node Types
EKS hỗ trợ volumes dạng:
🌟 16. AWS App Runner – Triển khai ứng dụng nhanh nhất
App Runner là dịch vụ fully-managed để chạy web app hoặc API.
Ưu điểm:
Rất phù hợp cho microservices và startup.
🎯 KẾT LUẬN
File đã trình bày toàn bộ hệ sinh thái container của AWS:
Nếu bạn học DevOps, Cloud, Backend → đây là nền tảng BẮT BUỘC PHẢI BIẾT.
Trong kiến trúc hiện đại, đặc biệt khi làm DevOps, Cloud, Microservices, các ứng dụng cần được triển khai theo cách nhanh – linh hoạt – nhất quán. Bộ công cụ chính là containers và hệ sinh thái container của AWS.
- Docker
- Docker Images & Repository
- ECS (EC2 Launch Type & Fargate)
- IAM Roles trong ECS
- ECS Auto Scaling
- ECR
- EKS (Kubernetes)
- App Runner
🌟 1. Docker là gì?
Docker là một nền tảng triển khai ứng dụng bằng container.
Container giúp ứng dụng chạy đồng nhất ở mọi môi trường, từ máy dev, máy test, đến production.
Lợi ích quan trọng của Docker:
- Không còn lỗi “chạy được trên máy tôi nhưng không chạy trên máy anh”.
- Không phụ thuộc hệ điều hành hay công nghệ.
- Dễ triển khai, dễ bảo trì.
- Hỗ trợ microservices.
- Rất phù hợp cho việc “lift-and-shift” từ on-prem lên AWS.
Container = ứng dụng + dependency → đóng gói gọn nhẹ → chạy ở mọi nơi.
🌟 2. Docker Images được lưu ở đâu?
Docker images được lưu trong Docker Repository.
Có hai loại chính: ✔ Docker Hub
- Repository công khai lớn nhất.
- Chứa hàng loạt image base như Ubuntu, MySQL, Nginx…
- Repository riêng tư hoặc công khai của AWS.
- Tích hợp sâu với ECS, EKS, App Runner.
- Bảo mật bằng IAM.
- Hỗ trợ quét lỗ hổng, lifecycle quản lý tag.
ECR thực chất được lưu nội bộ bằng S3 của AWS.
🌟 3. Docker vs Virtual Machines
Docker không phải là máy ảo.
Điểm khác nhau:
- VM có Guest OS riêng → nặng → tốn tài nguyên.
- Docker dùng chung kernel của host → nhẹ → chạy hàng trăm container trên một server.
- VM khởi động lâu → container khởi động cực nhanh.
Docker mang tính ảo hóa nhưng không ảo hóa cấp OS như VM.
🌟 4. Quy trình làm việc với Docker
Dựa theo tài liệu:
- Bạn viết Dockerfile
- Build ra image
- Push image lên repository (ví dụ ECR)
- Từ repository, bạn pull về và chạy thành container
AWS cung cấp toàn bộ công cụ để tự động hóa chu trình này.
🌟 5. Quản lý Docker Containers trên AWS
AWS có 4 dịch vụ container chính:
- Amazon ECS – nền tảng container của AWS
- Amazon EKS – chạy Kubernetes
- AWS Fargate – chạy containers theo kiểu serverless
- Amazon ECR – nơi lưu images
ECS và EKS là “orchestrator” — tức là chúng quản lý cách container chạy, scale, restart…
🌟 6. Amazon ECS – EC2 Launch Type
ECS = Elastic Container Service.
Ở chế độ EC2 Launch Type:
- Bạn phải tự tạo và quản lý các EC2 instance.
- Mỗi EC2 phải chạy ECS Agent để kết nối vào ECS Cluster.
- AWS chỉ lo phần khởi chạy/stopping containers.
- Bạn lo phần hạ tầng.
Khi cần scale số lượng task → bạn phải scale cả số lượng EC2.
🌟 7. Amazon ECS – Fargate Launch Type
Fargate là serverless cho containers.
- Không cần EC2.
- Chỉ khai báo CPU/RAM cho mỗi task.
- AWS tự lo hạ tầng và scaling.
- Đơn giản hơn EC2 Launch Type rất nhiều.
Dùng Fargate = không còn phải chăm sóc server.
🌟 8. IAM Role trong ECS
Có 2 loại chính: ✔ EC2 Instance Profile (chỉ dùng cho ECS EC2 Launch Type)
Dành cho ECS Agent để:
- Gọi API ECS
- Gửi log vào CloudWatch
- Pull image từ ECR
- Truy cập Secrets Manager / SSM
- Dùng cho từng task
- Mỗi task có thể có quyền riêng
- Khai báo trong Task Definition
Ví dụ: một task truy cập S3, task còn lại truy cập DynamoDB.
🌟 9. Load Balancer cho ECS
ECS hỗ trợ:
- Application Load Balancer (ALB) → phù hợp hầu hết use case
- Network Load Balancer (NLB) → dùng cho high performance hoặc PrivateLink
- Classic ELB → không khuyến khích
ECS tích hợp sâu với ALB để routing container linh hoạt.
🌟 10. ECS + EFS (Data Volumes)
Container trong ECS có thể mount EFS để lưu dữ liệu dùng chung.
- Hỗ trợ cả EC2 và Fargate
- Dữ liệu dùng chung giữa các AZ
- Fargate + EFS = hoàn toàn serverless
- S3 không mount trực tiếp như filesystem
Use case: app cần storage dùng chung giữa nhiều container.
🌟 11. ECS Service Auto Scaling
ECS có 3 cơ chế scale:
- Target tracking: scale khi vượt CPU hoặc RAM
- Step scaling: dựa trên CloudWatch Alarm
- Scheduled scaling: scale tại thời điểm xác định
Lưu ý: ECS task scaling ≠ EC2 auto scaling.
Fargate thì đơn giản vì không có EC2.
🌟 12. EC2 Launch Type Auto Scaling
Để ECS Service scale được, bạn phải scale cả EC2 bên dưới:
- Auto Scaling Group scale theo CPU
- Hoặc dùng ECS Cluster Capacity Provider để tự động bổ sung EC2 khi thiếu tài nguyên
🌟 13. ECS kết hợp EventBridge
ECS Tasks có thể được kích hoạt:
- Khi có file upload vào S3
- Khi có event từ DynamoDB
- Theo lịch giờ (cron)
- Hoặc kết hợp với SQS queue
Rất phù hợp cho xử lý batch hoặc event-driven.
🌟 14. Amazon ECR – Kho lưu trữ image của AWS
ECR lưu trữ toàn bộ Docker images.
Tính năng:
- Private & Public repository
- IAM kiểm soát truy cập
- Tích hợp ECS/EKS/App Runner
- Có vulnerability scanning
- Tự động quản lý lifecycle
🌟 15. Amazon EKS – Kubernetes Managed
EKS giúp bạn chạy Kubernetes trên AWS mà không cần tự setup control plane.
Đặc điểm:
- Dùng khi công ty đã quen với Kubernetes
- Kubernetes là cloud-agnostic
- Hỗ trợ EC2 hoặc Fargate làm worker node
- Một cluster/region
- Thu log bằng CloudWatch Container Insights
EKS Node Types
- Managed Node Groups: AWS quản lý ASG
- Self-managed nodes: bạn tự quản lý
- Fargate: không cần node
EKS hỗ trợ volumes dạng:
- EBS
- EFS (cho Fargate)
- FSx Lustre
- FSx ONTAP
🌟 16. AWS App Runner – Triển khai ứng dụng nhanh nhất
App Runner là dịch vụ fully-managed để chạy web app hoặc API.
Ưu điểm:
- Chỉ cần source code hoặc container image
- AWS tự build, tự deploy, tự scale
- Tích hợp load balancer, scaling, encryption
- Không cần kinh nghiệm hạ tầng
- Hỗ trợ kết nối VPC, database, cache…
Rất phù hợp cho microservices và startup.
🎯 KẾT LUẬN
File đã trình bày toàn bộ hệ sinh thái container của AWS:
- Docker → nền tảng container
- ECR → lưu trữ image
- ECS / Fargate → chạy containers
- EKS → Kubernetes
- App Runner → chạy app/web/API dễ nhất
Nếu bạn học DevOps, Cloud, Backend → đây là nền tảng BẮT BUỘC PHẢI BIẾT.