Docker
Docker là gì?

- Docker là một nền tảng phát triển phần mềm dùng để deploy ứng dụng.
- Ứng dụng được đóng gói trong containers (vùng chứa) có thể chạy trên bất kỳ hệ điều hành nào.
- Ứng dụng chạy như nhau, bất kể môi trường chạy là gì:
- Bất kỳ máy nào
- Không có vấn đề tương thích
- Hành vi có thể dự đoán được
- Giảm khối lượng công việc
- Dễ bảo trì và triển khai hơn
- Hỗ trợ mọi ngôn ngữ, mọi hệ điều hành, mọi công nghệ
- Use cases (Trường hợp sử dụng): kiến trúc microservices, triển khai ứng dụng từ hệ thống on-premises lên cloud như AWS, ...
Docker images được lưu trữ ở đâu?
- Docker images được lưu trữ trong Docker Repositories (kho lưu trữ Docker)
- Docker Hub (https://hub.docker.com)
- Public repository
- Có thể tìm thấy các base image cho nhiều công nghệ hoặc hệ điều hành (ví dụ: Ubuntu, MySQL, ...)
- Amazon ECR (Amazon Elastic Container Registry)
- Private repository
- Public repository (Amazon ECR Public Gallery: https://gallery.ecr.aws)
Docker vs. Virtual Machines
- Docker là một dạng "công nghệ ảo hóa", nhưng không hoàn toàn giống.
- Tài nguyên được chia sẻ với hệ điều hành host ⇒ có thể chạy nhiều container trên một server.

Lưu ý: Các EC2 instances trên AWS chính là Virtual Machines, chạy như một hệ điều hành độc lập được khởi tạo trên Hypervisor của AWS (ví dụ như Nitro Hypervisor).
Cách tạo Docker Image

- Viết Dockerfile →
docker build→ tạo ra image. - Push image lên Docker Hub hoặc ECR để quản lý tập trung.
- Pull image về bất kỳ môi trường nào cần chạy.
- Run image → tạo container để chạy ứng dụng thực tế
Tổng quan các dịch vụ quản lý container trên AWS
Amazon ECS (Elastic Container Service)
- Nền tảng native của AWS để triển khai, quản lý và scale container.
- Hoạt động tương tự như một orchestrator, giống Kubernetes nhưng do AWS tự phát triển.
- Hỗ trợ cả chế độ EC2 launch type (dựa trên VM) và Fargate launch type (serverless).
Amazon EKS (Elastic Kubernetes Service)
- Là dịch vụ Kubernetes được quản lý (managed Kubernetes service).
- Cho phép bạn chạy Kubernetes chuẩn open-source nhưng không cần lo vận hành master node.
- Thích hợp nếu bạn đang migrate từ on-prem hoặc đang dùng Kubernetes sẵn.
AWS Fargate
- Dịch vụ serverless cho container — bạn không cần quản lý hạ tầng EC2.
- Hoạt động như một “compute engine” cho ECS và EKS.
- Chỉ cần định nghĩa task hoặc pod, Fargate sẽ tự khởi chạy, scale, và vận hành.
Amazon ECR (Elastic Container Registry)
- Dịch vụ lưu trữ container image riêng của AWS.
- Tương đương với Docker Hub nhưng tối ưu cho AWS.
- Tích hợp tốt với IAM, CI/CD pipeline, và các dịch vụ ECS, EKS.
Bạn thấy bài này thế nào?