Kiến trúc Docker: Tại sao nó lại quan trọng?



Blog này thảo luận về kiến ​​trúc docker và các thành phần khác nhau của nó. Nó làm nổi bật các tính năng của docker cho chúng ta biết lý do phổ biến của nó.

Nhiều người trong chúng tôi tin rằng Docker là một phần không thể thiếu của . Vì vậy, đằng sau công cụ đáng kinh ngạc này, phải có một kiến ​​trúc tuyệt vời. Trong blog này, tôi sẽ trình bày mọi thứ mà bạn phải biết về kiến ​​trúc Docker. Đây là những điểm mà tôi sẽ thảo luận ở đây:

  1. Ảo hóa truyền thống so với Docker
  2. Quy trình làm việc của Docker
  3. Kiến trúc Docker

Ảo hóa truyền thống Vs Docker

VM (Máy ảo) là gì?

VM là một máy chủ ảo mô phỏng một máy chủ phần cứng. Máy ảo dựa vào phần cứng vật lý của hệ thống để mô phỏng chính xác môi trường mà bạn cài đặt các ứng dụng của mình. Tùy thuộc vào trường hợp sử dụng của mình, bạn có thể sử dụng máy ảo hệ thống (chạy toàn bộ hệ điều hành như một quá trình, cho phép bạn thay thế một máy thực cho một máy ảo) hoặc xử lý các máy ảo cho phép bạn thực thi các ứng dụng máy tính một mình trong ảo. Môi trường.





Trước đó, chúng tôi đã từng tạo các máy ảo và mỗi máy ảo có một hệ điều hành chiếm nhiều dung lượng và khiến nó nặng nề.

Docker là gì?

Docker là một dự án mã nguồn mở cung cấp giải pháp phát triển phần mềm được gọi là vùng chứa. Để hiểu Docker, bạn cần biết container là gì. Dựa theo Docker , container là một gói nhẹ, độc lập, có thể thực thi được của một phần mềm bao gồm mọi thứ cần thiết để chạy nó.



Các vùng chứa độc lập với nền tảng và do đó Docker có thể chạy trên cả nền tảng Windows và Linux. Trên thực tế, Docker cũng có thể được chạy trong một máy ảo nếu có nhu cầu. Mục đích chính của Docker là nó cho phép bạn chạy các ứng dụng microservice trong một kiến ​​trúc phân tán.

Khi so sánh với Máy ảo, nền tảng Docker nâng cấp tài nguyên trừu tượng từ cấp phần cứng lên cấp Hệ điều hành. Điều này cho phép nhận ra các lợi ích khác nhau của Container, ví dụ: tính di động của ứng dụng, phân tách cơ sở hạ tầng và các dịch vụ vi mô khép kín.

python def __init __ (tự)

Nói cách khác, trong khi Máy ảo trừu tượng hóa toàn bộ máy chủ phần cứng, Máy chủ chứa trừu tượng hóa hạt nhân Hệ điều hành. Đây là một cách tiếp cận hoàn toàn khác đối với ảo hóa và dẫn đến các phiên bản nhanh hơn và nhẹ hơn nhiều.



vm vs docker - Kiến trúc docker - edureka

Quy trình làm việc của Docker

Đầu tiên, chúng ta hãy xem xét Docker Engine và các thành phần của nó để chúng ta có ý tưởng cơ bản về cách hệ thống hoạt động. Docker Engine cho phép bạn phát triển, lắp ráp, vận chuyển và chạy các ứng dụng bằng cách sử dụng các thành phần sau:

  1. Docker Daemon : Một quy trình nền liên tục quản lý hình ảnh Docker, vùng chứa, mạng và khối lượng lưu trữ. Daemon Docker liên tục lắng nghe các yêu cầu API Docker và xử lý chúng.

  2. API REST của Docker Engine : Một API được ứng dụng sử dụng để tương tác với daemon Docker. Nó có thể được truy cập bởi một máy khách HTTP.

  3. Docker CLI : Một ứng dụng khách giao diện dòng lệnh để tương tác với trình nền Docker. Nó đơn giản hóa đáng kể cách bạn quản lý các phiên bản vùng chứa và là một trong những lý do chính khiến các nhà phát triển thích sử dụng Docker.

Lúc đầu, ứng dụng khách Docker nói chuyện với Docker daemon, trình nền này thực hiện việc nâng hạng nặng của tòa nhà, đang chạy, cũng như phân phối các vùng chứa Docker của chúng tôi. Về cơ bản, cả ứng dụng khách Docker và daemon đều có thể chạy trên cùng một hệ thống. Chúng tôi cũng có thể kết nối ứng dụng khách Docker vớidaemon Docker từ xa. Ngoài ra, bằng cách sử dụng API REST, ứng dụng khách Docker và daemon, giao tiếp qua ổ cắm UNIX hoặc giao diện mạng.

Kiến trúc Docker

Kiến trúc của Docker sử dụng mô hình máy khách-máy chủ và bao gồm các thành phần Docker’s Client, Docker Host, Network và Storage và Docker Registry / Hub. Hãy xem xét từng chi tiết trong số này.

Khách hàng của Docker

Người dùng Docker có thể tương tác với Docker thông qua một ứng dụng khách. Khi bất kỳ lệnh docker nào chạy, máy khách sẽ gửi chúng đến dockerd daemon để thực thi chúng. Docker API được sử dụng bởi các lệnh Docker. Ứng dụng khách Docker có thể giao tiếp với nhiều hơn một daemon.

ví dụ về lớp và đối tượng python

Máy chủ Docker

Máy chủ lưu trữ Docker cung cấp một môi trường hoàn chỉnh để thực thi và chạy các ứng dụng. Nó bao gồm daemon Docker, Hình ảnh, Vùng chứa, Mạng và Bộ nhớ. Như đã đề cập trước đây, daemon chịu trách nhiệm cho tất cả các hành động liên quan đến vùng chứa và nhận các lệnh thông qua CLI hoặcAPI REST. Nó cũng có thể giao tiếp với các daemon khác để quản lý các dịch vụ của mình.

Đối tượng Docker

1. Hình ảnh

Hình ảnh không là gì ngoài một mẫu nhị phân chỉ đọc có thể tạo vùng chứa. Chúng cũng chứa siêu dữ liệu mô tả các khả năng và nhu cầu của vùng chứa. Hình ảnh được sử dụng để lưu trữ và gửi các ứng dụng. Hình ảnh có thể được sử dụng riêng để tạo vùng chứa hoặc tùy chỉnh để thêm các phần tử bổ sung nhằm mở rộng cấu hình hiện tại.

Bạn có thể chia sẻ hình ảnh vùng chứa giữa các nhóm trong một doanh nghiệp với sự trợ giúp của sổ đăng ký vùng chứa riêng hoặc chia sẻ nó với mọi người bằng cách sử dụng sổ đăng ký công khai như Docker Hub. Hình ảnh là yếu tố cốt lõi của trải nghiệm Docker vì chúng cho phép cộng tác giữa các nhà phát triển theo cách mà trước đây không thể thực hiện được

2. Thùng chứa

Vùng chứa là loại môi trường được đóng gói trong đó bạn chạy các ứng dụng. Vùng chứa được xác định bởi hình ảnh và bất kỳ tùy chọn cấu hình bổ sung nào được cung cấp khi khởi động vùng chứa, bao gồm và không giới hạn các kết nối mạng và các tùy chọn lưu trữ. Vùng chứa chỉ có quyền truy cập vào tài nguyên được xác định trong hình ảnh, trừ khi quyền truy cập bổ sung được xác định khi xây dựng hình ảnh thành vùng chứa.

Bạn cũng có thể tạo hình ảnh mới dựa trên trạng thái hiện tại của vùng chứa. Vì các vùng chứa nhỏ hơn nhiều so với máy ảo, chúng có thể được quay trong vài giây và dẫn đến mật độ máy chủ tốt hơn nhiều

3. Mạng

Mạng Docker là một đoạn qua đó tất cả các vùng chứa biệt lập giao tiếp với nhau. Chủ yếu có năm trình điều khiển mạng trong docker:

    1. Cầu : Nó là trình điều khiển mạng mặc định cho một vùng chứa. Bạn sử dụng mạng này khi ứng dụng của bạn đang chạy trên các vùng chứa độc lập, tức là nhiều vùng chứa giao tiếp với cùng một máy chủ docker.

    2. Tổ chức : Trình điều khiển này loại bỏ sự cô lập mạng giữa bộ chứa docker và máy chủ docker. Bạn có thể sử dụng nó khi không cần cách ly mạng giữa máy chủ và vùng chứa.

    3. Lớp phủ : Mạng này cho phép các dịch vụ bầy đàn giao tiếp với nhau. Bạn sử dụng nó khi bạn muốn các vùng chứa chạy trên các máy chủ Docker khác nhau hoặc khi bạn muốn hình thành các dịch vụ bầy đàn bởi nhiều ứng dụng.

    4. không ai : Trình điều khiển này tắt tất cả kết nối mạng.

    5. macvlan : Trình điều khiển này gán địa chỉ mac cho các vùng chứa để làm cho chúng trông giống như các thiết bị vật lý. Nó định tuyến lưu lượng giữa các container thông qua địa chỉ mac của chúng. Bạn sử dụng mạng này khi bạn muốn các vùng chứa trông giống như một thiết bị vật lý, chẳng hạn trong khi di chuyển thiết lập máy ảo.

      giải thích sự khác biệt giữa các đối tượng có thể thay đổi và bất biến.

4. Lưu trữ

Bạn có thể lưu trữ dữ liệu trong lớp có thể ghi của vùng chứa nhưng nó yêu cầu trình điều khiển lưu trữ. Không bền bỉ, nó sẽ chết bất cứ khi nào vùng chứa không chạy. Hơn nữa, không dễ để chuyển dữ liệu này. Đối với lưu trữ liên tục, Docker cung cấp bốn tùy chọn:

    1. Khối lượng dữ liệu : Chúng cung cấp khả năng tạo lưu trữ liên tục, với khả năng đổi tên các ổ, liệt kê các ổ và cũng liệt kê vùng chứa được liên kết với ổ. Khối lượng dữ liệu được đặt trên hệ thống tệp máy chủ lưu trữ, bên ngoài bộ chứa cơ chế sao chép khi ghi và khá hiệu quả.

    2. Khối lượng container : Đây là một cách tiếp cận thay thế trong đó một thùng chứa chuyên dụng chứa một khối lượng và để gắn khối lượng đó vào các thùng chứa khác. Trong trường hợp này, vùng chứa khối lượng độc lập với vùng chứa ứng dụng và do đó bạn có thể chia sẻ nó trên nhiều vùng chứa.

    3. Directory Mounts : Một tùy chọn khác là gắn thư mục cục bộ của máy chủ lưu trữ vào vùng chứa. Trong các trường hợp đã đề cập trước đây, các ổ sẽ phải nằm trong thư mục Docker volume, trong khi khi nói đến Directory Mounts, bất kỳ thư mục nào trên máy Host đều có thể được sử dụng làm nguồn cho ổ.

    4. Plugin lưu trữ : Plugin lưu trữ cung cấp khả năng kết nối với các nền tảng lưu trữ bên ngoài. Các plugin này ánh xạ bộ nhớ từ máy chủ lưu trữ đến nguồn bên ngoài như mảng lưu trữ hoặc thiết bị. Bạn có thể xem danh sách các plugin lưu trữ trên trang Docker’s Plugin.

Docker’s Registry

Cơ quan đăng ký Docker là dịch vụ cung cấp vị trí từ đó bạn có thể lưu trữ và tải xuống hình ảnh. Nói cách khác, sổ đăng ký Docker chứa các kho lưu trữ Docker lưu trữ một hoặc nhiều Hình ảnh Docker. Cơ quan đăng ký công khai bao gồm hai thành phần là Docker Hub và Docker Cloud. Bạn cũng có thể sử dụng Đăng ký Riêng tư. Các lệnh phổ biến nhất khi làm việc với sổ đăng ký bao gồm: docker push, docker pull, docker run

Bây giờ bạn đã hiểu Kiến trúc Docker, hãy xem phần này của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Khóa đào tạo Chứng chỉ Edureka DevOps giúp người học hiểu DevOps là gì và có được kiến ​​thức chuyên môn về các quy trình và công cụ DevOps khác nhau như Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack và GIT để tự động hóa nhiều bước trong SDLC.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của “Kiến trúc Docker” này và chúng tôi sẽ liên hệ lại với bạn