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

  • Container

    Containers là gì?


    Container là một công nghệ đóng gói ứng dụng cùng với toàn bộ các thành phần mà ứng dụng cần để hoạt động, bao gồm:
    • Thư viện (Libraries)
    • Runtime
    • File cấu hình
    • Các thành phần phụ thuộc (Dependencies)

    Nhờ vậy, ứng dụng có thể chạy nhất quán trên nhiều môi trường khác nhau mà không gặp vấn đề "chạy được trên máy tôi nhưng không chạy trên máy khác".

    Ví dụ:

    Một ứng dụng Web được đóng gói thành Docker Container có thể chạy:
    • Trên laptop của Developer
    • Trên Windows Server
    • Trên Linux Server
    • Trên Azure
    • Trên AWS
    • Trên Google Cloud

    mà không cần thay đổi mã nguồn hoặc cấu hình đáng kể.
    Containers và Application Virtualization (App-V)


    Trước khi Containers trở nên phổ biến, Microsoft từng cung cấp công nghệ Application Virtualization (App-V).

    Mục tiêu của App-V là:
    • Đóng gói ứng dụng
    • Tách ứng dụng khỏi hệ điều hành
    • Giảm xung đột giữa các phần mềm

    Ví dụ:

    Hai phiên bản Microsoft Office khác nhau có thể cùng tồn tại trên một máy tính mà không gây xung đột.

    Containers cũng theo đuổi ý tưởng tương tự:
    • Đóng gói ứng dụng
    • Tách biệt ứng dụng khỏi môi trường bên ngoài
    • Tạo môi trường thực thi nhất quán

    Tuy nhiên Containers đi xa hơn rất nhiều.

    Mỗi Container có:
    • Không gian tiến trình (Process Space) riêng
    • Hệ thống file riêng
    • Network Stack riêng
    • Registry hoặc Namespace riêng (tùy nền tảng)

    Điều này tạo ra mức độ cô lập cao hơn nhiều so với App-V truyền thống.
    Containers hoạt động như thế nào?


    Khác với máy ảo, Container không cần một hệ điều hành riêng.

    Các Container cùng chia sẻ:
    • Host Operating System
    • Kernel của hệ điều hành

    Trong khi đó:
    • Mỗi Container chỉ chứa ứng dụng và các thành phần cần thiết
    • Không cần cài đặt Guest OS đầy đủ

    Đây là lý do Containers rất nhẹ và khởi động cực nhanh.
    Containers và Virtual Machines khác nhau như thế nào?


    Đây là câu hỏi mà rất nhiều người mới học Docker hoặc Kubernetes thường đặt ra. Virtual Machine


    Trong mô hình VM:
    • Hypervisor chạy trên phần cứng
    • Mỗi VM có hệ điều hành riêng
    • Mỗi VM có kernel riêng
    • Mỗi VM tiêu tốn RAM và CPU cho Guest OS

    Ví dụ:

    Một máy chủ có thể chạy:
    • Windows Server VM
    • Ubuntu VM
    • CentOS VM

    Mỗi VM đều phải khởi động hệ điều hành riêng biệt.
    Container


    Trong mô hình Container:
    • Chia sẻ kernel của Host OS
    • Không cần Guest OS riêng
    • Chỉ chứa ứng dụng và dependency

    Do đó:
    • Khởi động trong vài giây hoặc vài trăm mili giây
    • Tiêu thụ ít RAM hơn
    • Mật độ triển khai cao hơn nhiều

    Một máy chủ có thể chạy hàng chục hoặc hàng trăm Container trên cùng một hệ điều hành.
    So sánh nhanh giữa VM và Container


    Máy ảo cung cấp khả năng cô lập ở cấp độ hệ điều hành hoàn chỉnh. Mỗi VM có kernel riêng nên mức độ bảo mật và cách ly rất mạnh.

    Container chia sẻ kernel với Host OS nên nhẹ hơn rất nhiều, nhưng mức độ cô lập mặc định thấp hơn VM.

    Đổi lại:
    • Triển khai nhanh hơn
    • Mở rộng quy mô dễ hơn
    • Tiết kiệm tài nguyên hơn
    • Phù hợp với DevOps và Microservices

    Container Isolation và vấn đề bảo mật


    Một điểm quan trọng cần hiểu là không phải tất cả Container đều có cùng mức độ bảo mật. Process Isolation


    Đây là chế độ mặc định của Windows Containers.

    Trong chế độ này:
    • Các Container chia sẻ cùng Kernel
    • Mỗi Container có User Mode Boundary riêng
    • Các tiến trình được cô lập với nhau

    Ưu điểm:
    • Hiệu năng cao
    • Tiêu thụ ít tài nguyên
    • Khởi động rất nhanh

    Tuy nhiên:
    • Không tạo ra ranh giới bảo mật mạnh như VM
    • Nếu Kernel bị khai thác thành công, nhiều Container có thể bị ảnh hưởng

    Microsoft gọi đây là lightweight isolation.
    Hyper-V Isolation


    Để tăng cường bảo mật, Windows hỗ trợ Hyper-V Isolation.

    Trong chế độ này:
    • Mỗi Container được đặt bên trong một VM siêu nhẹ (Lightweight VM)
    • Có Kernel riêng biệt
    • Tách biệt khỏi Host OS

    Lợi ích:
    • Tăng cường Security Boundary
    • Giảm nguy cơ Container Escape
    • Phù hợp cho môi trường Multi-Tenant hoặc Cloud

    Có thể xem Hyper-V Isolation như sự kết hợp giữa:
    • Tính linh hoạt của Container
    • Tính bảo mật của Virtual Machine

    Khi nào nên dùng Container và khi nào nên dùng VM?


    Virtual Machine phù hợp khi:
    • Cần chạy nhiều hệ điều hành khác nhau
    • Yêu cầu bảo mật cao
    • Chạy các ứng dụng truyền thống (Legacy Applications)

    Container phù hợp khi:
    • Triển khai Microservices
    • DevOps và CI/CD
    • Cloud-Native Applications
    • Scale-out nhanh
    • Kubernetes

    Trong thực tế hiện nay, nhiều doanh nghiệp sử dụng kết hợp cả hai mô hình. Kubernetes Cluster thường chạy bên trong các Virtual Machine, trong khi các ứng dụng lại chạy bên trong Containers.
    Kết luận


    Container là bước tiến tiếp theo của công nghệ ảo hóa ứng dụng. Nếu App-V tập trung vào việc đóng gói và tách biệt ứng dụng, thì Containers mở rộng khái niệm đó bằng cách cung cấp môi trường thực thi độc lập, nhất quán và linh hoạt hơn. So với Virtual Machine, Containers nhẹ hơn, nhanh hơn và phù hợp với các kiến trúc Cloud-Native hiện đại. Tuy nhiên, về mặt bảo mật, Process Isolation không tạo ra ranh giới mạnh như VM, vì vậy Hyper-V Isolation được Microsoft phát triển để kết hợp ưu điểm của cả Container và Virtual Machine trong các môi trường yêu cầu mức độ bảo vệ cao hơn.​
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X