Docker Engine là gì?
Docker Engine là công nghệ máy khách-máy chủ cơ bản hỗ trợ các tác vụ và quy trình công việc liên quan đến việc xây dựng, vận chuyển và chạy các ứng dụng chứa trong container bằng các thành phần và dịch vụ của Docker.
Khi sử dụng riêng lẻ, thuật ngữ Docker có thể ám chỉ Docker Engine hoặc công ty Docker Inc., nơi cung cấp nhiều phiên bản công nghệ container hóa xung quanh Docker Engine.
Các thành phần của Docker Engine
Docker Engine là công nghệ nguồn mở bao gồm một máy chủ với một tiến trình daemon gọi là dockerd, một REST API và một giao diện dòng lệnh phía máy khách ( CLI ) gọi là docker. Công cụ này tạo ra một tiến trình daemon phía máy chủ lưu trữ hình ảnh, vùng chứa , mạng và khối lượng lưu trữ . CLI cho phép người dùng tương tác với daemon Docker thông qua API.
Docker Engine là khai báo, nghĩa là người quản trị lập trình một tập hợp các điều kiện cụ thể làm trạng thái mong muốn . Sau đó, công cụ sẽ tự động điều chỉnh các thiết lập và điều kiện thực tế để đảm bảo chúng luôn khớp với trạng thái mong muốn.
Docker Engine so với Docker Machine
Docker Engine ban đầu được phát triển cho các hệ thống Linux và sau đó đã được mở rộng để hoạt động gốc trên cả Windows và macOS. Docker Machine là một công cụ được sử dụng để cài đặt và quản lý Docker Engine trên nhiều máy chủ ảo hoặc các phiên bản macOS và Windows cũ hơn. Khi Docker Machine được cài đặt trên hệ thống cục bộ, việc thực thi lệnh thông qua Docker Machine không chỉ tạo máy chủ ảo mà còn cài đặt Docker và cấu hình máy khách của nó.
Tính đến năm 2021, Docker Inc. không còn duy trì Docker Machine nữa và khuyến nghị sử dụng ứng dụng Docker Desktop để phát triển container trên macOS và Windows.
Docker Engine và chế độ swarm
Một bầy đàn là một cụm các Docker Engine được kết nối mà quản trị viên có thể triển khai các dịch vụ ứng dụng. Trong phiên bản 1.12, Docker đã tích hợp Docker Swarm trực tiếp vào Docker Engine và đổi tên dịch vụ dàn dựng thành chế độ bầy đàn . Chế độ bầy đàn là dịch vụ dàn dựng và cụm gốc của Docker Engine, mặc dù Docker Engine có thể chạy các tùy chọn khác, chẳng hạn như Kubernetes .
Với Docker Engine, quản trị viên có thể khởi tạo cả nút quản lý và nút công nhân từ một ảnh đĩa duy nhất khi chạy thay vì triển khai. Vì Docker Engine chạy trên mô hình khai báo, chế độ swarm duy trì và trở về trạng thái mong muốn đã khai báo trong trường hợp xảy ra sự cố ngừng hoạt động hoặc mở rộng quy mô.
Nền tảng Docker bao gồm máy chủ vật lý, hệ điều hành máy chủ, Docker Engine, hệ điều hành và cấu hình container, cùng các ứng dụng. Docker Engine đóng vai trò quan trọng trong nền tảng công nghệ hỗ trợ các ứng dụng chứa trong container. Các plugin và khối lượng lưu trữ của Docker Engine Docker Engine có thể sử dụng nhiều plugin, có sẵn dưới dạng hình ảnh được lưu trữ trong sổ đăng ký riêng hoặc kho lưu trữ công khai như GitHub hoặc Docker Hub. Quản trị viên có thể quản lý toàn bộ vòng đời của plugin bằng Docker Engine, từ cài đặt đến xóa.
Các plugin tạo ra các mục như khối lượng dữ liệu, là các thư mục tồn tại trong một vùng chứa. Có ba loại khối lượng:
-
Các ổ đĩa lưu trữ nằm trong hệ thống tập tin.
-
Các ổ đĩa được đặt tên sẽ được Docker quản lý trên đĩa nơi ổ đĩa được tạo và đặt tên.
-
Các tập tin ẩn danh tương tự như các tập tin được đặt tên, nhưng không được liên kết với một nguồn cụ thể bên ngoài vùng chứa, khiến chúng khó tham chiếu hơn.
Docker Engine tạo một khối dữ liệu đồng thời với một hình ảnh container và có thể bao gồm dữ liệu được sao chép từ một hình ảnh cha. Các container có thể chia sẻ và sử dụng lại các khối, và các khối không bị xóa khi một container bị xóa. Vì Docker Engine không xóa hoặc thu thập các khối dữ liệu đã bị xóa, nên người dùng chịu trách nhiệm về các khối dữ liệu của họ.
Mạng trong Docker Engine
Docker Engine cung cấp trình điều khiển mạng mặc định cho người dùng để tạo các mạng cầu nối duy nhất kiểm soát giao tiếp container. Docker Inc. khuyến nghị người dùng nên tự định nghĩa mạng cầu nối của riêng mình vì mục đích bảo mật.
Container có thể kết nối với nhiều mạng hoặc không kết nối với mạng nào, và có thể kết nối và ngắt kết nối khỏi mạng mà không làm gián đoạn hoạt động của container. Docker Engine bao gồm ba mô hình mạng:
- Bridge thêm container vào mạng docker0 mặc định.
- Không có tùy chọn nào thêm container vào ngăn xếp mạng dành riêng cho container nhưng không cấp cho container quyền truy cập mạng bên ngoài.
- Máy chủ thêm các container vào ngăn xếp mạng của máy chủ mà không có sự cô lập giữa máy chủ và các container. Người dùng cũng có thể tạo plugin trình điều khiển mạng nếu ba loại mạng chuẩn của Docker không phù hợp với nhu cầu của họ. Các plugin này có cùng các hạn chế và quy tắc như các plugin khác và sử dụng API plugin.
Mạng Docker Engine và chế độ swarm có thể hoạt động cùng nhau để tạo mạng phủ trên các nút quản lý mà không cần lưu trữ khóa-giá trị bên ngoài, điều này là cần thiết cho các cụm không được quản lý bởi chế độ swarm. Mạng phủ này chỉ khả dụng cho các nút công nhân yêu cầu nó cho một dịch vụ và tự động mở rộng đến bất kỳ nút mới nào đang chạy dịch vụ. Việc tạo mạng phủ mà không sử dụng chế độ swarm yêu cầu một dịch vụ lưu trữ khóa-giá trị hợp lệ và không được khuyến nghị cho hầu hết người dùng.