3.1 Docker Engine
Docker Engine — là "động cơ" của Docker, hay nói cách khác là phần mềm chính đảm bảo hoạt động của các container. Động cơ này cung cấp nền tảng để phát triển, phân phối và chạy ứng dụng trong các container cô lập. Docker Engine bao gồm nhiều thành phần chính, giúp Docker hoạt động đầy đủ chức năng.
Docker Engine bao gồm ba phần chính:
- Docker Daemon: tiến trình máy chủ. Nó thực hiện các thao tác chính với container.
- Docker API: giao diện cho phép tương tác với Docker Daemon thông qua các lệnh gọi chương trình.
- Docker CLI: giao diện dòng lệnh — để làm việc với Docker.
Vai trò của Docker Engine:
Docker Engine quản lý vòng đời của các container, từ việc tạo, chạy đến xóa. Nó đảm bảo cô lập giữa các container, cho phép chạy nhiều container trên một host mà không bị xung đột. Docker Engine giúp chạy các ứng dụng phức tạp và microservices trong container, giúp việc phát triển, kiểm thử và triển khai trở nên đơn giản hơn
.
Sự phát triển của Docker Engine
Kể từ khi ra đời, Docker Engine đã trải qua nhiều phiên bản và cải tiến. Mỗi bản cập nhật mang lại các tính năng mới và cải thiện hiệu suất. Ví dụ, đã có các tính năng như điều phối container (container orchestration), như Docker Swarm, cho phép quản lý cluster container và tự động hóa việc triển khai ứng dụng.
3.2 Docker Daemon
Docker Daemon — là process server chính, thực hiện tất cả các operations của Docker. Nó chạy dưới chế độ background và chịu trách nhiệm quản lý containers, images, networks và các resources khác của Docker.
Chức năng của Docker Daemon:
- Tạo và quản lý containers: Docker Daemon xử lý các yêu cầu tạo, chạy, dừng và xóa containers. Nó đảm bảo sự cô lập các containers và phân phối tài nguyên giữa chúng.
- Làm việc với images: Docker Daemon tải xuống và lưu giữ images của containers, được sử dụng để tạo containers. Nó cũng quản lý bộ nhớ cache của images để tối ưu hóa sử dụng không gian đĩa.
- Quản lý mạng: Docker Daemon tạo và quản lý networks của Docker, cho phép các containers tương tác với nhau và với các hệ thống bên ngoài. Nó hỗ trợ các drivers và cài đặt mạng khác nhau để đảm bảo tính linh hoạt và an toàn.
- Quản lý lưu trữ: Docker Daemon quản lý volumes và các loại lưu trữ khác, được containers sử dụng để lưu giữ dữ liệu. Nó đảm bảo việc quản lý dữ liệu trong các containers một cách đáng tin cậy và hiệu quả.
Kiến trúc Docker Daemon
Docker Daemon sử dụng kiến trúc client-server. Client (CLI hoặc API) gửi các lệnh đến Docker Daemon, sau đó nó xử lý và thực hiện. Daemon hoạt động trên các hệ điều hành khác nhau: Linux, MacOS hoặc Windows.
Vai trò trong bảo mật:
Docker Daemon đóng vai trò cực kỳ quan trọng trong việc đảm bảo an ninh của containers. Nó quản lý quyền truy cập, cài đặt mạng và sự cô lập containers, cho phép hạn chế các mối đe dọa và lỗ hổng tiềm năng. Sử dụng namespaces (công nghệ cô lập process và resources) và cgroups (cơ chế quản lý tài nguyên), Docker Daemon cô lập các process và kiểm soát việc sử dụng tài nguyên của containers, đảm bảo chúng hoạt động một cách an toàn.
3.3 Docker API
Docker API là giao diện lập trình, cho phép các lập trình viên và quản trị viên hệ thống quản lý Docker thông qua code. Nó hoạt động dựa trên nguyên tắc RESTful (Representational State Transfer) - một kiểu kiến trúc, nơi tương tác được thực hiện thông qua các yêu cầu HTTP chuẩn như GET, POST, và DELETE. Điều này giúp dễ dàng tự động hóa các nhiệm vụ liên quan đến container và tích hợp Docker với các hệ thống và công cụ khác.
Chức năng của Docker API:
- Quản lý container: Docker API cho phép tạo, chạy, dừng và xóa container, cũng như lấy thông tin về trạng thái và log của chúng.
- Làm việc với images: Với API, bạn có thể tải lên, tạo, xóa và quản lý các image của container.
- Thao tác mạng: API hỗ trợ tạo và quản lý mạng Docker, bao gồm kết nối và ngắt kết nối các container khỏi mạng.
- Quản lý lưu trữ: API cung cấp các chức năng để quản lý volumes và các loại lưu trữ khác mà container sử dụng để lưu trữ dữ liệu.
Sử dụng Docker API:
Docker API có thể được sử dụng với nhiều ngôn ngữ lập trình và công cụ tự động hóa, như Python, Go, Java, và các ngôn ngữ khác. Điều này cho phép bạn tạo các script và ứng dụng để tự động hóa quy trình phát triển, kiểm thử và triển khai các ứng dụng container.
Ví dụ sử dụng Docker API:
- CI/CD: Tự động hóa quy trình tích hợp liên tục và triển khai, nơi mỗi thay đổi trong code tự động tạo một container mới và kiểm tra nó.
- Giám sát và ghi log: tích hợp với các hệ thống giám sát và ghi log để theo dõi trạng thái của container và phân tích hiệu suất của chúng.
- Orchestration: quản lý các cluster container bằng Docker Swarm hoặc Kubernetes, sử dụng Docker API để tương tác với các node và container riêng lẻ.
3.4 Docker CLI
Docker CLI (Command Line Interface) — là giao diện dòng lệnh cho phép người dùng tương tác với Docker Daemon và thực hiện các thao tác khác nhau với container. Docker CLI cung cấp một cách dễ dàng và trực quan để quản lý Docker thông qua terminal.
Các lệnh chính của Docker CLI:
Docker CLI hỗ trợ một loạt các lệnh cho phép thực hiện tất cả các thao tác chính với container, image, mạng và storage. Một số lệnh bao gồm:
- docker run: chạy một container mới từ image.
- docker build: tạo một image mới từ Dockerfile.
- docker pull: tải image từ Docker Hub hoặc từ registry khác.
- docker push: tải lên image từ máy cục bộ vào registry.
- docker ps: xem danh sách các container đang chạy.
- docker stop: dừng container đang chạy.
- docker rm: xóa container đã dừng.
- docker network: quản lý mạng của Docker.
Đặc điểm nổi bật của Docker CLI:
- Dễ sử dụng: Docker CLI được thiết kế để dễ hiểu và dễ sử dụng. Các lệnh có cấu trúc đơn giản và logic, giúp ngay cả những người mới cũng có thể sử dụng dễ dàng.
- Script và tự động hóa: Docker CLI cho phép tạo script để tự động hóa các tác vụ liên quan đến container. Điều này giúp đơn giản hóa việc quản lý các cụm container lớn và tích hợp Docker với các công cụ và hệ thống khác.
- Mở rộng: Docker CLI hỗ trợ plugin, cho phép mở rộng chức năng và thêm các lệnh mới. Điều này giúp Docker CLI linh hoạt và thích ứng với các yêu cầu và kịch bản sử dụng khác nhau.
Tương tác giữa các thành phần:
Docker CLI tương tác với Docker Daemon thông qua Docker API. Khi người dùng nhập một lệnh trong Docker CLI, lệnh đó được gửi đến Docker Daemon để xử lý, sau đó kết quả được trả về CLI. Sự tương tác này cung cấp một cách mạnh mẽ và linh hoạt để quản lý container và tài nguyên Docker.
Ví dụ sử dụng Docker CLI:
- Phát triển: các nhà phát triển có thể sử dụng Docker CLI để nhanh chóng tạo ra môi trường phát triển và kiểm thử cô lập, dễ dàng chuyển đổi giữa các phiên bản thư viện và framework khác nhau.
- Triển khai: quản trị viên có thể sử dụng Docker CLI để tự động hóa việc triển khai ứng dụng lên server và các môi trường đám mây, đảm bảo sự ổn định và dễ dự đoán trong quy trình.
- Gỡ lỗi và giám sát: với Docker CLI, bạn dễ dàng truy cập log của container, kiểm tra trạng thái của chúng và thực hiện gỡ lỗi ứng dụng.

Docker Engine, Docker Daemon, Docker API và Docker CLI — đây là các thành phần chính đảm bảo chức năng và quản lý container trong hệ sinh thái Docker. Docker Engine là lõi của hệ thống, bao gồm Docker Daemon và Docker API. Docker Daemon thực hiện tất cả các thao tác tạo và quản lý container, Docker API cung cấp giao diện lập trình để tương tác với Daemon, và Docker CLI cung cấp giao diện tiện lợi để thực hiện các lệnh khác nhau.
GO TO FULL VERSION