Giải đáp các câu hỏi cơ bản về công nghệ container

1060
05-04-2019
Giải đáp các câu hỏi cơ bản về công nghệ container

Kể từ khi bùng nổ vào năm 2013, công nghệ Docker đã tạo ra những sự quan tâm sôi nổi trong giới IT.

Công nghệ ứng dụng container do Docker cung cấp hứa hẹn sẽ tác động mạnh mẽ đến sự thay đổi cách thức vận hành của công nghệ giống như những gì ảo hóa đã làm một vài năm trước đây.

>> Tìm hiểu thêm: Hệ sinh thái Docker: Tổng quan về Container

Và sau đây Bizfly Cloud sẽ đưa ra giải đáp các câu hỏi chi tiết về công nghệ Container này.

Công nghệ Container là gì?

Container là một giải pháp nhằm giải quyết vấn đề như sau: làm thế nào để phần mềm chạy ổn định 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? Những tình huống có thể xảy ra là chuyển tiếp từ máy tính xách tay của developer đến môi trường thử nghiệm, từ môi trường giả định đến sản xuất, từ máy tính vật lý trong trung tâm dữ liệu đến máy ảo trong đám mây riêng hoặc đám mây công cộng.

Các vấn đề phát sinh trong môi trường phần mềm là không giống nhau, Theo Solomon Hykes, người tạo ra Docker: "Khi bạn thử nghiệm bằng Python 2.7, và sau đó chạy trên Python 3 trong sản xuất, vấn đề bất thường sẽ phát sinh. Tương tự khi chạy thử nghiệm trên Debian và sản xuất trên Red Hat cũng sẽ dẫn đến những hiện tượng khác lạ, "

Giải đáp các câu hỏi cơ bản về công nghệ container - Ảnh 1.

Và không chỉ các phần mềm khác nhau mới có thể gây ra vấn đề. "Cấu trúc liên kết mạng hay chính sách bảo mật và lưu trữ cũng có thể khác nhau nhưng phần mềm bắt buộc phải chạy trên các yếu tố này."

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 sẽ chứa toàn bộ môi trường runtime: ứ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, các tệp cấu hình cần thiết để chạy trong cùng một package. Chính vì nền tảng ứng dụng và các phụ thuộc của nó nằm trong cùng 1 gói, sự khác biệt trong phân phối HĐH và cơ sở hạ tầng bên dưới đượ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, package có thể truyền qua lại chính 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 máy đó.

Ngược lại, một máy chủ chạy ba ứng dụng container Docker có chung một hệ điều hành và mỗi container sẽ chia sẻ kernel của hệ điều hành với các container khác. Các phần được chia sẻ là read only, trong khi mỗi vùng chứa có mount riêng (chẳng hạn như 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.

Container còn cung cấp những lợi ích nào khác?

Giải đáp các câu hỏi cơ bản về công nghệ container - Ảnh 2.

Một container có thể chỉ có tầm vài chục megabyte dung lượng, nhưng một máy ảo với toàn bộ hệ điều hành có thể lên tới vài gigabyte. Vì nguyên nhân này, một server có thể lưu trữ nhiều container hơn nhiều so với máy ảo.

Bên cạnh đó, các máy ảo có thể phải mất đến vài phút để khởi động HĐH và chạy các ứng dụng được lưu trữ, trong khi các ứng dụng trong container có thể được khởi động gần như ngay tức thì. Và như vậy, các container có thể được khởi tạo theo kiểu "kịp thời" khi cần và biến mất khi không còn cần thiết nữa, qua đó giải phóng tài nguyên trên máy chủ.

Lợi ích thứ ba là công nghệ container hỗ trợ module hóa nhiều hơn. Thay vì chạy toàn bộ ứng dụng phức tạp bên trong một container, ứng dụng có thể được chia thành các module (chẳng hạn như cơ sở dữ liệu, giao diện người dùng, v.v.). Cách thức này đượ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 module tương đối đơn giản và các thay đổi module có thể được thực hiện 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 module riêng lẻ (hoặc microservice) chỉ được khởi tạo khi thực sự cần thiết và sẵn sang hoạt động 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ười đồng hành cùng container bởi Docker đã vô cùng thành công trong việc phổ biến nó công nghệ.này. Tuy nhiên container không hẳni là mới; công nghệ này đã được tích hợp vào Linux dưới dạng LXC trong hơn 10 năm qua và tương tự, ảo hóa hệ điều hành cũng đã được FreeBSD jails, AIX Workload Partitions và Solaris Container cung cấp từ trước.

Liệu có một định dạng container tiêu chuẩn không?

Trở lại năm 2015, một công ty có tên CoreOS đã đưa thông số kỹ thuật riêng cho App Container Image (ACI), khác hoàn toàn với đặc điểm kỹ thuật container của Docker. Cũng tại thời điểm đó, xuất hiện phong trào container mới tách rời với các định dạng container cạnh tranh của Linux.

Cùng năm đó, một sáng kiến có tên Open Container Project (OCP) đã ra đời và sau đó đổi tên thành Open Container Initiative (OCI). Được vận hành dưới sự bảo trợ của Quỹ Linux, mục đích của OCI là phát triển các tiêu chuẩn "ngành" cho định dạng container và phần mềm container runtime cho tất cả các nền tảng. Tiêu chuẩn đầu tiên của các OCP là công nghệ Docker và Docker đã quyên góp khoảng 5% codebase để đưa dự án đi vào hoạt động.

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.

Theo BĩFly Cloud tổng hợp

>> Có thể bạn quan tâm: Những câu hỏi thường gặp về Container và giải đáp (tiếp)

TAGS: container
SHARE