Containers là gì?
Containers là một phương thức đóng gói ứng dụng và các dependencies đi kèm (libs, configuration, runtime, v.v.) vào trong một package, có thể chạy được ở bất kỳ môi trường nào. Điểm mạnh của containers là tính nhất quán: ứng dụng chạy giống nhau từ môi trường phát triển, staging đến production.
Một số đặc điểm nổi bật của containers:
- Nhẹ hơn so với Virtual Machine (VM) vì không cần kèm theo toàn bộ hệ điều hành.
- Khởi động nhanh, tiêu tốn ít tài nguyên.
- Có thể dễ dàng scale lên/xuống khi lưu lượng thay đổi.
- Tách biệt ứng dụng, giảm rủi ro ảnh hưởng lẫn nhau.
Tại sao cần Containers?
Mở đầu: Khi bạn tạo một EC2 Instance, thực chất AWS cung cấp cho em một máy ảo (VM) chạy trên hạ tầng vật lý của họ.
Việc sử dụng Container để giải quyết những vấn đề mà VM gặp phải:
- Tính di động: Ứng dụng trong container có thể chạy trên bất kỳ môi trường nào hỗ trợ container runtime (Docker, containerd, v.v.) mà không cần lo lắng về sự khác biệt của hệ điều hành.
- Tối ưu tài nguyên: Containers chia sẻ kernel của host OS, giúp tiết kiệm tài nguyên hơn so với VM.
- Tính toàn vẹn và nhất quán: Môi trường trong container luôn giống nhau, giảm thiểu lỗi do khác biệt môi trường.
So sánh Container vs Virtual Machine
| Tiêu chí | Virtual Machine (VM) | Container |
|---|---|---|
| Hệ điều hành | Mỗi VM cần một OS riêng | Chia sẻ Kernel với host OS |
| Mức độ tài nguyên | Nặng, tiêu tốn nhiều tài nguyên | Nhẹ, sử dụng tài nguyên hiệu quả |
| Thời gian khởi động | Phút | Giây |
| Tính di động | Khó khăn | Cao, dễ triển khai ở mọi môi trường |
Kết luận: Containers giúp tiết kiệm tài nguyên và tăng tốc độ triển khai so với VM, phù hợp với các ứng dụng hiện đại cần linh hoạt và dễ mở rộng.
Docker là gì?
Docker là một nền tảng phổ biến nhất để xây dựng, chạy và quản lý containers.
Với Docker, bạn có thể:
- Đóng gói ứng dụng cùng dependencies thành Docker Image.
- Chạy image đó thành một Container.
- Chia sẻ image thông qua Docker Hub hoặc các registry như Amazon ECR.
Kiến trúc cơ bản của Docker
- Docker Image: Template bất biến, chứa toàn bộ code + dependencies của ứng dụng.
- Docker Container: Instance đang chạy của image.
- Docker Daemon: Quản lý containers trên host.
- Docker CLI: Công cụ dòng lệnh để tương tác với Docker.
Vai trò của Containers trong AWS
Trong AWS, containers được hỗ trợ bởi nhiều dịch vụ giúp bạn dễ dàng triển khai và quản lý:
- Amazon ECS (Elastic Container Service): Dịch vụ native của AWS để chạy containers.
- Amazon ECR (Elastic Container Registry): Nơi lưu trữ Docker images.
- Amazon EKS (Elastic Kubernetes Service): Dịch vụ Kubernetes managed trên AWS.