System Containers so với Application Containers: Cộng đồng tranh luận về tuyên bố bảo mật và sự khác biệt kỹ thuật

Nhóm Cộng đồng BigGo
System Containers so với Application Containers: Cộng đồng tranh luận về tuyên bố bảo mật và sự khác biệt kỹ thuật

Thế giới container hóa đang sôi động với cuộc tranh luận về những khác biệt cơ bản giữa system containers và application containers, được khơi mào bởi tài liệu gần đây từ dự án Incus. Trong khi các tài liệu chính thức cố gắng vạch ra ranh giới rõ ràng giữa các công nghệ này, cộng đồng nhà phát triển đang phản bác một số tuyên bố quan trọng.

Ranh giới mờ nhạt giữa các loại Container

Sự phân biệt truyền thống giữa system containers và application containers đang phải đối mặt với sự xem xét nghiêm túc từ các nhà phát triển, họ cho rằng các danh mục này thiên về marketing hơn là thực tế kỹ thuật. Những người chỉ trích chỉ ra rằng bạn hoàn toàn có thể chạy hệ điều hành đầy đủ trong các container Docker, kèm theo hệ thống init và nhiều người dùng. Tương tự, các container LXC có thể host các ứng dụng đơn lẻ hiệu quả không kém Docker.

Tính linh hoạt này thách thức việc phân loại gọn gàng mà nhiều nguồn tài liệu trình bày. Thực tế là cả hai công nghệ đều sử dụng các tính năng tương tự của Linux kernel như namespaces và cgroups để cô lập.

Lưu ý: Namespaces cung cấp cô lập tiến trình, trong khi cgroups kiểm soát phân bổ tài nguyên như CPU và bộ nhớ.

So sánh các loại Container

Tính năng Máy ảo System Container Application Container
Sử dụng Kernel Kernel riêng biệt Chia sẻ kernel của host Chia sẻ kernel của host
Hỗ trợ OS Nhiều loại OS Chỉ Linux Chỉ Linux
Sử dụng tài nguyên Cao hơn Thấp hơn Thấp hơn
Yêu cầu phần cứng Hỗ trợ ảo hóa Chỉ cần phần mềm Chỉ cần phần mềm
Hosting ứng dụng Nhiều ứng dụng Nhiều ứng dụng Truyền thống là một ứng dụng
Công cụ chính Incus , VMware , QEMU Incus , LXC Docker , Podman

Màn kịch bảo mật hay bảo vệ thực sự

Một trong những chủ đề nóng nhất trong cuộc thảo luận tập trung vào các tuyên bố về bảo mật. Nhiều nhà phát triển bày tỏ sự hoài nghi về việc liệu system containers có mang lại lợi thế bảo mật có ý nghĩa so với application containers hay không. Vấn đề cốt lõi vẫn là cả hai đều chia sẻ host kernel, tạo ra một bề mặt tấn công lớn.

Như một nhà phát triển đã nói: Containers chỉ tận dụng các kỹ thuật cô lập namespace Linux hiện có để cô lập ứng dụng. Một cách tốt để nghĩ về nó là chúng hoạt động như tấm che mắt trên con ngựa.

Sự đồng thuận giữa các nhà phát triển tập trung vào bảo mật là việc cô lập thực sự đòi hỏi ảo hóa phần cứng hoặc các giải pháp chuyên biệt như gVisor và Firecracker. Linux kernel API đã chứng minh là cực kỳ khó bảo mật, bất chấp những nỗ lực đang diễn ra.

Các Thành Phần Kỹ Thuật Chính

Các Tính Năng Kernel Linux Được Sử Dụng Bởi Container:

  • Namespaces: Cung cấp khả năng cô lập tiến trình ( PID , mạng, hệ thống tệp)
  • Cgroups: Kiểm soát phân bổ tài nguyên và giới hạn
  • SECCOMP: Lọc system call để bảo mật
  • Capabilities: Kiểm soát đặc quyền chi tiết
  • Network namespaces: Cô lập ngăn xếp mạng

Tính chính xác của tài liệu bị chỉ trích

Cộng đồng đã xác định một số lỗi thực tế trong tài liệu container hiện tại. Các tuyên bố rằng application containers chỉ có thể host các ứng dụng đơn lẻ bỏ qua thực tế là các container Docker thường xuyên chạy nhiều tiến trình. Tương tự, các tuyên bố về hỗ trợ chỉ dành cho Linux bỏ qua hoàn toàn Windows containers.

Những điều không chính xác này làm nổi bật một vấn đề rộng hơn về cách các công nghệ container được marketing so với cách chúng thực sự hoạt động. Các nhà phát triển đang kêu gọi độ chính xác kỹ thuật cao hơn trong tài liệu, đặc biệt khi nói đến các tuyên bố bảo mật và mô tả khả năng.

Thực tế thực tiễn

Bất chấp những cuộc tranh luận gay gắt về định nghĩa, nhiều nhà phát triển đang tìm thấy giá trị thực tiễn trong các công cụ như Incus cho các trường hợp sử dụng cụ thể. Khả năng quản lý máy ảo bằng các lệnh giống như container thu hút những người chạy môi trường homelab hoặc quản lý nhiều instance Linux.

Cuộc thảo luận cho thấy rằng trong khi những khác biệt lý thuyết giữa các loại container có thể bị thổi phồng, những khác biệt về công cụ và trải nghiệm người dùng vẫn là những yếu tố quan trọng trong quyết định áp dụng công nghệ.

Tham khảo: About containers and VMs