Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tổng hợp kiến thức docker – ecs – fargate – eks – ecr – app runner

    🚀 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.
    • 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…
    ✔ Amazon ECR (Elastic Container Registry)
    • 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:
    1. Bạn viết Dockerfile
    2. Build ra image
    3. Push image lên repository (ví dụ ECR)
    4. 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
    ✔ ECS Task Role
    • 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.
Working...
X