container là gì

Container là gì và tại sao bạn cần chúng?

Các Container là một giải pháp cho vấn đề làm thế nào để phần mềm chạy một cách đáng tin cậy khi được chuyển từ môi trường máy tính này sang môi trường máy tính khác. Điều này có thể là từ máy tính xách tay của nhà phát triển đến môi trường thử nghiệm, từ môi trường dàn dựng đến sản xuất và có thể từ máy vật lý trong trung tâm dữ liệu đến máy ảo trong đám mây riêng hoặc công cộng.

Các vấn đề phát sinh khi môi trường phần mềm hỗ trợ không giống nhau, nhà sáng tạo Docker, Solomon Hykes nói. “Bạn sẽ thử nghiệm bằng Python 2.7, và sau đó nó sẽ chạy trên Python 3 trong sản xuất và điều gì đó kỳ lạ sẽ xảy ra. Hoặc bạn sẽ dựa vào hành vi của một phiên bản nhất định của thư viện SSL và một phiên bản khác sẽ được cài đặt . Bạn sẽ chạy thử nghiệm trên Debian và sản xuất trên Red Hat và tất cả những điều kỳ lạ xảy ra. “

Và nó không chỉ là phần mềm khác nhau có thể gây ra vấn đề, ông nói thêm. “Cấu trúc liên kết mạng có thể khác hoặc chính sách bảo mật và lưu trữ có thể khác nhưng phần mềm phải chạy trên nó.”

Làm thế nào để container giải quyết vấn đề này?

Nói một cách đơn giản, một Container bao gồm toàn bộ môi trường thời gian chạy: một ứng dụng, cộng với tất cả các phụ thuộc, thư viện và các tệp nhị phân khác và các tệp cấu hình cần thiết để chạy nó, được gói vào một gói. Bằng cách chứa nền tảng ứng dụng và các phụ thuộc của nó, sự khác biệt trong phân phối HĐH và cơ sở hạ tầng cơ bản được loại bỏ.

Sự khác biệt giữa container và ảo hóa là gì?

Với công nghệ ảo hóa, gói có thể được truyền xung quanh là một máy ảo và nó bao gồm toàn bộ hệ điều hành cũng như ứng dụng. Một máy chủ vật lý chạy ba máy ảo sẽ có một trình ảo hóa và ba hệ điều hành riêng biệt chạy trên nó.

Ngược lại, một máy chủ chạy ba ứng dụng được đóng gói với Docker chạy một hệ điều hành và mỗi container chia sẻ nhân hệ điều hành với các container khác. Các phần được chia sẻ của hệ điều hành chỉ được đọc, trong khi mỗi Container có giá đỡ riêng (nghĩa là một cách để truy cập vào Container) để viết. Điều đó có nghĩa là các container nhẹ hơn nhiều và sử dụng ít tài nguyên hơn nhiều so với máy ảo.

Những lợi ích khác làm container cung cấp?

Một container có thể chỉ có kích thước hàng chục megabyte, trong khi đó một máy ảo với toàn bộ hệ điều hành của nó có thể có kích thước vài gigabyte. Bởi vì điều này, một máy chủ duy nhất có thể lưu trữ nhiều container hơn nhiều so với máy ảo.

Một lợi ích lớn khác là các máy ảo có thể mất vài phút để khởi động hệ điều hành của chúng và bắt đầu chạy các ứng dụng mà chúng lưu trữ, trong khi các ứng dụng được chứa có thể được khởi động gần như ngay lập tức. Điều đó có nghĩa là các container có thể được khởi tạo theo kiểu “đúng lúc” khi chúng cần thiết và có thể biến mất khi không còn cần thiết, giải phóng tài nguyên trên máy chủ của chúng.

Một lợi ích thứ ba là container hóa cho phép mô đun hóa lớn hơn. Thay vì chạy toàn bộ một ứng dụng phức tạp bên trong một Container, ứng dụng có thể được chia thành các mô-đun (chẳng hạn như cơ sở dữ liệu, giao diện người dùng, v.v.). Đây là cách tiếp cận được gọi là microservice. Các ứng dụng được xây dựng theo cách này dễ quản lý hơn vì mỗi mô-đun tương đối đơn giản và các thay đổi có thể được thực hiện cho các mô-đun mà không phải xây dựng lại toàn bộ ứng dụng. Vì các Container rất nhẹ, các mô-đun riêng lẻ (hoặc microservice) chỉ có thể được khởi tạo khi chúng cần thiết và có sẵn gần như ngay lập tức.

Sự khác biệt giữa Docker và container là gì?

Docker đã trở thành đồng nghĩa với công nghệ container bởi vì nó đã thành công nhất trong việc phổ biến nó. Nhưng công nghệ container không phải là mới; nó đã được tích hợp vào Linux dưới dạng LXC trong hơn 10 năm và ảo hóa cấp độ hệ điều hành tương tự cũng đã được cung cấp bởi các nhà tù FreeBSD, AIX Workload Partitions và Solaris Container.

Có một định dạng container tiêu chuẩn?

Quay trở lại năm 2015, một công ty có tên CoreOS đã sản xuất thông số kỹ thuật Hình ảnh ứng dụng (ACI) của riêng mình khác với đặc điểm kỹ thuật của Container Docker và tại thời điểm đó, có một rủi ro là phong trào container mới phổ biến sẽ phân mảnh với các định dạng container đối thủ của Linux.

Nhưng sau đó cùng năm, một sáng kiến ​​gọi là Dự án Container mở đã được công bố và sau đó đổi tên thành Sáng kiến ​​Container mở (OCI). Được vận hành dưới sự bảo trợ của Linux Foundation, mục đích của OCI là phát triển các tiêu chuẩn công nghiệp cho định dạng container và phần mềm thời gian chạy container cho tất cả các nền tảng. Điểm khởi đầu của các tiêu chuẩn OCP là công nghệ Docker và Docker đã quyên góp khoảng 5 phần trăm cơ sở mã của nó cho dự án để đưa nó ra khỏi mặt đất.

Các nhà tài trợ của dự án bao gồm AWS, Google, IBM, HP, Microsoft, VMware, Red Hat, Oracle, Twitter và HP cũng như Docker và CoreOS

Tại sao tất cả các công ty này tham gia vào Sáng kiến ​​Container mở?

Ý tưởng của OCI là đảm bảo rằng các khối xây dựng cơ bản của công nghệ container (như định dạng container) được tiêu chuẩn hóa để mọi người có thể tận dụng lợi thế của chúng.

Điều đó có nghĩa là thay vì sử dụng các nguồn lực để phát triển các công nghệ container cạnh tranh, các tổ chức có thể tập trung vào phát triển phần mềm bổ sung cần thiết để hỗ trợ việc sử dụng các container được tiêu chuẩn hóa trong môi trường doanh nghiệp hoặc đám mây. Loại phần mềm cần thiết bao gồm hệ thống quản lý và điều phối container và hệ thống bảo mật container.

Có bất kỳ hệ thống quản lý container nguồn mở miễn phí?

Đúng. Có lẽ các hệ thống quản lý container nguồn mở và miễn phí được biết đến nhiều nhất và được sử dụng rộng rãi nhất là Kubernetes , một dự án phần mềm có nguồn gốc từ Google. Kubernetes cung cấp các cơ chế để triển khai, duy trì và nhân rộng các ứng dụng được đóng gói

Những giải pháp quản lý container thương mại tồn tại ngày nay?

Docker Enterprise Edition có lẽ là giải pháp quản lý container thương mại nổi tiếng nhất. Nó cung cấp một nền tảng tích hợp, được thử nghiệm và được chứng nhận cho các ứng dụng chạy trên hệ điều hành Linux hoặc Windows dành cho doanh nghiệp và các nhà cung cấp đám mây.

Nhưng có nhiều cái khác, và một vài cái đáng chú ý có một lớp phần mềm độc quyền được xây dựng xung quanh Kubernetes ở lõi. Ví dụ về loại sản phẩm phần mềm quản lý này bao gồm:

  • CoreOS’s Tectonic đóng gói sẵn tất cả các thành phần nguồn mở cần thiết để xây dựng cơ sở hạ tầng kiểu Google và thêm các tính năng thương mại bổ sung, như bảng điều khiển quản lý, tích hợp SSO của công ty và Quay , đăng ký container sẵn sàng cho doanh nghiệp.
  • Nền tảng container thay đổi mở của Red Hat  là một nền tảng riêng tại chỗ như một sản phẩm dịch vụ, được xây dựng xung quanh lõi của các Container ứng dụng được cung cấp bởi Docker, với sự điều phối và quản lý được cung cấp bởi Kubernetes, trên nền tảng của Red Hat Enterprise Linux.
  • Rancher Labs ‘ Rancher là một giải pháp nguồn mở thương mại được thiết kế giúp dễ dàng triển khai và quản lý các container trong sản xuất trên bất kỳ cơ sở hạ tầng nào.

Container liệu có an toàn để sử dụng?

Nhiều người tin rằng các container kém an toàn hơn các máy ảo bởi vì nếu có lỗ hổng trong nhân máy chủ chứa, nó có thể cung cấp một cách vào các container đang chia sẻ nó. Điều đó cũng đúng với một trình ảo hóa, nhưng vì một trình ảo hóa cung cấp chức năng ít hơn nhiều so với nhân Linux (thường thực hiện các hệ thống tệp, mạng, điều khiển quá trình ứng dụng, v.v.), nó thể hiện bề mặt tấn công nhỏ hơn nhiều.

Nhưng trong vài năm qua, rất nhiều nỗ lực đã được dành cho việc phát triển phần mềm để tăng cường bảo mật cho các container.

Ví dụ, Docker (và các hệ thống container khác) hiện bao gồm cơ sở hạ tầng ký cho phép quản trị viên ký vào hình ảnh container để ngăn chặn các container không đáng tin cậy được triển khai.

Tuy nhiên, không nhất thiết trường hợp một container đáng tin cậy, có chữ ký được bảo mật để chạy, bởi vì các lỗ hổng có thể được phát hiện trong một số phần mềm trong container sau khi nó được ký. Vì lý do đó, Docker và những người khác cung cấp các giải pháp quét bảo mật container có thể thông báo cho quản trị viên nếu bất kỳ hình ảnh container nào có lỗ hổng có thể bị khai thác.

Nhiều phần mềm bảo mật container chuyên dụng cũng đã được phát triển. Ví dụ, Twistlock cung cấp phần mềm cấu hình hành vi dự kiến ​​của người chứa và các quy trình “danh sách trắng”, các hoạt động mạng (như địa chỉ IP nguồn và đích) và thậm chí các hành vi lưu trữ nhất định để mọi hành vi độc hại hoặc bất ngờ có thể bị gắn cờ.

Một công ty bảo mật container chuyên nghiệp khác được gọi là Polyverse có một cách tiếp cận khác. Lợi dụng thực tế là các container có thể được khởi động trong một phần giây để khởi chạy lại các ứng dụng được chứa trong trạng thái tốt đã biết cứ sau vài giây để giảm thiểu thời gian tin tặc phải khai thác ứng dụng chạy trong container.

Những bản phân phối Linux nào phù hợp để sử dụng làm máy chủ chứa?

Hầu hết các bản phân phối Linux đều nặng tính năng không cần thiết nếu mục đích sử dụng của chúng chỉ đơn giản là hoạt động như một máy chủ chứa để chạy container. Vì lý do đó, một số bản phân phối Linux đã được thiết kế dành riêng cho việc chạy các Container .

Một số ví dụ bao gồm:

  • Container Linux (trước đây là CoreOS Linux) – một trong những hệ điều hành container nhẹ đầu tiên được xây dựng cho container
  • RancherOS – một bản phân phối Linux đơn giản được xây dựng từ các container, đặc biệt để chạy các container.
  • Photon OS – máy chủ chứa Linux tối thiểu, được tối ưu hóa để chạy trên nền tảng VMware.
  • Project Atomic Host – Hệ điều hành container nhẹ của Red Hat có các phiên bản dựa trên CentOS và Fedora, và cũng có phiên bản doanh nghiệp hạ nguồn trong Red Hat Enterprise Linux.  
  • Ubuntu Core – phiên bản Ubuntu nhỏ nhất, Ubuntu Core được thiết kế như một hệ điều hành máy chủ cho các thiết bị IoT và triển khai container đám mây quy mô lớn

Nếu bạn đang dùng Windows thì sao?

Ngoài việc chạy trên bất kỳ bản phân phối Linux nào đang chạy phiên bản 3.10 (hoặc mới hơn) của nhân Linux, Docker cũng chạy trên Windows.

Đó là bởi vì vào năm 2016, Microsoft đã giới thiệu khả năng chạy các Container Windows trong Windows Server 2016 và Windows 10. Đây là các Container Docker được thiết kế cho Windows và chúng có thể được quản lý từ bất kỳ máy khách Docker nào hoặc từ PowerShell của Microsoft.

(Microsoft cũng giới thiệu các Container Hyper-V, là các Container Windows chạy trong máy ảo Hyper-V để cách ly thêm.)

Các Container Windows có thể được triển khai trên bản cài đặt chuẩn của Windows Server 2016, cài đặt Server Core được sắp xếp hợp lý hoặc tùy chọn cài đặt Nano Server được thiết kế riêng để chạy các ứng dụng bên trong các Container hoặc máy ảo.

Ngoài Linux và Windows, Docker cũng chạy trên các nền tảng đám mây phổ biến bao gồm Amazon EC2, Google Compute Engine, Microsoft Azure và Rackspace.

Container cuối cùng sẽ thay thế ảo hóa máy chủ?

Điều đó không thể xảy ra trong tương lai gần vì một số lý do quan trọng.

Đầu tiên, vẫn còn một quan điểm rộng rãi rằng các máy ảo cung cấp bảo mật tốt hơn các container vì mức độ cô lập cao hơn mà chúng cung cấp.

Thứ hai, các công cụ quản lý có sẵn để sắp xếp số lượng lớn các container cũng chưa đầy đủ như phần mềm để quản lý cơ sở hạ tầng ảo hóa, chẳng hạn như vCenter của VMware hoặc Trung tâm hệ thống của Microsoft. Các công ty đã đầu tư đáng kể vào loại phần mềm này dường như không muốn từ bỏ cơ sở hạ tầng ảo hóa của họ mà không có lý do chính đáng.

Có lẽ quan trọng hơn, ảo hóa và container cũng đang được coi là công nghệ bổ sung chứ không phải là công nghệ cạnh tranh. Đó là bởi vì các container có thể được chạy trong các máy ảo nhẹ để tăng sự cô lập và do đó bảo mật và bởi vì ảo hóa phần cứng giúp quản lý cơ sở hạ tầng phần cứng (mạng, máy chủ và lưu trữ) cần thiết để hỗ trợ các container dễ dàng hơn.

VMware khuyến khích các khách hàng đã đầu tư vào cơ sở hạ tầng quản lý máy ảo của mình để chạy các container trên Container Photon OS Linux của họ trong các máy ảo nhẹ có thể được quản lý từ vCenter. Đây là chiến lược “container trong VM” của VMware.

Nhưng VMware cũng đã giới thiệu cái mà nó gọi là vSphere Integration Container (VIC). Các Container này có thể được triển khai trực tiếp đến máy chủ ESXi độc lập hoặc được triển khai đến Máy chủ vCenter như thể chúng là máy ảo. Đây là chiến lược “container as VM” của VMware.

Cả hai phương pháp đều có lợi ích của chúng, nhưng điều quan trọng là thay vì thay thế máy ảo, việc sử dụng các container trong cơ sở hạ tầng ảo hóa thường rất hữu ích.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments