Trang Chủ Linux Công nghệ container là gì?

Công nghệ container là gì?

bởi jw019681
container on ship

Nói đơn giản: Đóng gói ứng dụng máy tính lại để dễ dàng sử dụng hơn.

Công nghệ container hay đơn giản là container, là một cách đóng gói ứng dụng để nó có thể chạy với những tài nguyên của riêng nó và độc lập với các ứng dụng khác. Những nhà cung cấp dịch vụ điện toán đám mây như Amazon Web Services, Microsoft Azure và Google đều dùng công nghệ container, với những phần mềm quản lý container phổ biến như Docker, Apache Mesos, rkt (rocket) và Kubernetes.

Tên container lấy cảm hứng từ ngành công nghiệp vận chuyển. Khi hàng hóa, bất kể là gì sẽ được đóng gói vào trong một container rồi đặt lên những chiếc tàu khổng lồ để trung chuyển đi khắp nơi trên thế giới. Với qui trình được chuẩn hóa, tuy lượng lớn hàng hóa lớn bên trong, container vẫn dễ dàng tháo gỡ và tiết kiệm chi phí vận chuyển bằng đường biển.

Công nghệ container trên máy tính cũng tương tự như vậy. Hay xảy ra trường hợp là một chương trình chạy tốt trên một máy tính, nhưng khi đem sang một máy tính khác thì nó không hoạt động như mong muốn. Điều này xảy ra là do môi trường hoạt động của phần mềm trên mỗi máy tính khác nhau (OS, thư viện, cấu hình bảo mật…) dẫn đến hoạt động của phần mềm bị ảnh hưởng.

Cũng giống như cần trục bốc từng container đặt lên tàu để vận chuyển, công nghệ container trên máy tính cũng tương tự. Một container không chỉ có phần mềm mà còn có dependencies như thư viện, tập tin cấu hình, tất cả chúng được tích hợp như một container để tránh những khác biệt giữa các máy như hệ điều hành, phần cứng làm không tương thích phần mềm và gây lỗi. Container thường được triển khai như phần mềm trên máy chủ.

container vs virtual machine

Máy ảo

Máy ảo được sử dụng trước khi container phổ biến. Một máy chủ vật lý có thể được dùng cho nhiều ứng dụng thông qua công nghệ ảo hóa (virtualization technology), được biết như máy ảo. Mỗi máy ảo chứa một hệ điều hành và ứng dụng chạy trên đó.

Trái lại, với công nghệ container, máy chủ chạy một hệ điều hành, mỗi container chia sẻ hệ điều hành này cùng với những container khác. Những phần của hệ điều hành được chia sẻ để chạy container là riêng biệt và không tương tác với những container khác. So với máy ảo, container cần ít tài nguyên của máy chủ và hiệu quả hơn, rất nhiều container có thể chạy trên cùng một server. Ví dụ, mỗi hệ điều hành cần gigabytes lưu trữ, mỗi container chỉ cần megabytes.

Container hoạt động như thế nào?

Container được thiết lập để làm việc trong một container cluster gọi là node với những container khác. Có một cluster master hay master node để quản lý những node này. Vai trò của master node là lên lịch chạy, cân bằng tải cho các node, quản lý vòng đời và nâng cấp các node.

Công nghệ container không mới, nó là một trong những thành phần cốt lõi của hệ điều hành Linux. Những năm gần đây, nhờ tiến bộ trong công nghệ thông tin đã giúp công nghệ này dễ dùng hơn và những nhà phát triển phần mềm cũng nhận ra ưu điểm của nó nhờ sự đơn giản, tránh những vấn đề tương thích. Nó cũng cho phép những nhà phát triển chia nhỏ một chương trình thành từng phần nhỏ hơn gọi là microservices.

Lợi ích của microservices là mỗi nhóm phát triển có thể làm việc trên mỗi container riêng biệt ngay sau khi các container có thể trao đổi thông tin lẫn nhau. Điều này giúp việc phát triển phần mềm nhanh hơn. Công nghệ container cũng cho phép việc điều khiển các container một cách riêng biệt

Những công ty quản lý các container như thế nào?

Có những ứng dụng đang chạy bằng rất nhiều container kết hợp lại trên rất nhiều máy chủ khắp nới trên thế giới. Việc quản lý các container thủ công là điều không thể, vì vậy quản lý các container một cách từ động là một yêu cầu bắt buộc. Một trong những ứng dụng quản lý container phổ biến là Kubernetes. Nó sẽ hỗ trợ việc triển khai, cân bằng tải, nâng cấp, thay đổi các container trên máy chủ. Nó làm việc tốt chiến lược phát triển ứng dụng theo mô hình DevOps.

Một trong những đặc điểm nổi bật của công nghệ container là sự linh hoạt. Với một máy ảo, nó mất vài phút để khởi động. Nhưng với công nghệ container, máy chủ vật lý đã chạy một hệ điều hành, các container chỉ mất vài giây để chạy. Điều này cho phép các container chạy hay dừng theo nhu cầu, nhiều yêu cầu đến server sẽ cho chạy nhiều container, ít thì có thể dừng một số container.

container orchestration

Thêm vào đó nếu một container bị lỗi, nó có thể khởi động lại rất nhanh để làm việc trở lại. Việc này được gọi là container orchestration và Docker Swarm, Kubernetes là những ứng dụng kiểu này. Chúng phân bổ lượng task trong mỗi container cluster.

Nhiều container cùng chia sẻ một hệ điều hành, sẽ gây ra lo ngại về tính bảo mật. Khi bảo mật trên máy chủ không tốt, nó tác động đến nhiều container. Có nhiều nghiên cứu cho vấn đề này. Một trong số đó là trước khi được chạy các container phải được xác thực. Cũng có những phần mềm bảo mật container như Twistlock, nó sẽ xem xét hành vi của container và sẽ ngưng chạy nếu phát hiện hoạt động nghi ngờ.

Related Articles

Để lại bình luận