Containerd là một container runtime mã nguồn mở cấp cao, được thiết kế để quản lý toàn bộ vòng đời của container trên hệ điều hành máy chủ. Trong bài viết này mình sẽ giúp bạn hiểu rõ hơn về containerd, từ khái niệm, cách thức vận hành, so sánh với Docker và hướng dẫn cách cài đặt, cấu hình cơ bản để bạn có thể vận hành các ứng dụng container hóa một cách hiệu quả.
Những điểm chính
- Khái niệm containerd: Biết được đây là một container runtime mã nguồn mở cấp cao, chịu trách nhiệm thực thi và quản lý vòng đời của container trên hệ điều hành máy chủ.
- Cách thức vận hành và quản lý: Vận hành qua việc nhận chỉ thị qua API, quản lý image, tạo snapshot, tạo và quản lý task, chạy container engine tiêu chuẩn, theo dõi trạng thái và sử dụng namespace để phân tách workload.
- So sánh với Docker: Docker là công cụ all-in-one, trong khi containerd là runtime thuần túy chuyên quản lý vòng đời container. containerd nhẹ hơn, phù hợp tích hợp sâu với Kubernetes.
- Cài đặt và cấu hình cơ bản: Được hướng dẫn chi tiết các bước cài đặt và cấu hình containerd cơ bản.
- Giới thiệu Vietnix: Biết được Vietnix cung cấp nền tảng Enterprise Cloud tối ưu cho môi trường containerd.
- Câu hỏi thường gặp: Được giải đáp các thắc mắc liên quan đến containerd.

Containerd là gì?
Containerd là một container runtime mã nguồn mở cấp cao, được thiết kế để quản lý toàn bộ vòng đời của container – từ khởi tạo, thực thi, giám sát cho tới dừng và xóa container trên hệ thống máy chủ.

Lịch sử của containerd có nguồn gốc từ Docker Engine, nơi thành phần này ban đầu giữ vai trò là runtime cốt lõi. Với mục tiêu thúc đẩy quá trình chuẩn hóa ngành công nghiệp container, Docker đã quyết định tách biệt thành phần này thành một dự án độc lập và đóng góp cho Cloud Native Computing Foundation (CNCF) vào tháng 3 năm 2017.
Sau một thời gian phát triển dưới sự bảo trợ của CNCF, containerd đã đạt đến một dấu mốc quan trọng vào tháng 2 năm 2019 khi chính thức minh chứng cho sự trưởng thành, ổn định và việc được cộng đồng tin tưởng ứng dụng rộng rãi.
Kể từ đó, containerd đã khẳng định vị thế của mình như một container runtime tiêu chuẩn công nghiệp, được giới công nghệ thừa nhận rộng rãi nhờ vào khả năng mở rộng, hiệu suất và tính ổn định vượt trội.
Cách thức vận hành và quản lý container
Containerd vận hành và quản lý container thông qua một quy trình chặt chẽ với các bước và thành phần phối hợp như sau:
- Nhận chỉ thị qua API: Containerd hoạt động như một daemon nhận yêu cầu quản lý container qua giao thức gRPC API từ các công cụ cấp cao như Docker hoặc Kubernetes.
- Quản lý image: Khi cần tạo container, containerd sẽ kéo và lưu trữ image cần thiết thông qua Image Service và Content Store. Image sẽ trải qua các thao tác kiểm tra, truy xuất và lưu trữ layer để đảm bảo đầy đủ dữ liệu phục vụ khởi tạo container.
- Tạo snapshot: Snapshotter tạo file hệ thống nền (filesystem snapshot), hỗ trợ copy-on-write để mỗi container có thể khởi tạo nhanh trên nền image gốc mà không tốn thêm nhiều dung lượng lưu trữ.
- Tạo và quản lý task: Quá trình khởi tạo container thực chất là việc tạo một task mới trong containerd. Task này đại diện cho instance container đang chạy, được kiểm soát chặt chẽ qua Task Service (bao gồm việc start, stop, pause, resume, hoặc xóa task/container).
- Chạy container engine tiêu chuẩn (runc): Containerd phối hợp với runc (runtime tiêu chuẩn theo OCI) để thực sự chạy các container – tức là tạo môi trường cô lập (namespace, cgroup) và thực thi tiến trình trong container đó.
- Theo dõi và quản lý trạng thái: Containerd giám sát trạng thái container (đang chạy, dừng, lỗi…) và phát sinh sự kiện thông qua Event Service. Các event này giúp các nền tảng như Kubernetes cập nhật và kiểm soát vòng đời ứng dụng kịp thời.
- Namespace phân tách workloads: Containerd sử dụng cơ chế namespace để cô lập tài nguyên, đảm bảo nhiều hệ thống hoặc tenant có thể sử dụng chung một instance containerd mà không can thiệp lẫn nhau.

So sánh Containerd và Docker
Khi so sánh hai công cụ container phổ biến là Docker và Containerd, việc hiểu rõ điểm giống và khác nhau giúp người dùng lựa chọn phù hợp với mục đích sử dụng và môi trường triển khai. Dưới đây là bảng so sánh chi tiết giữa Docker và Containerd về các khía cạnh như kiến trúc, chức năng và phạm vi ứng dụng, giúp làm rõ vai trò cũng như lợi ích riêng biệt của từng công cụ trong hệ sinh thái container hiện đại:
| Tiêu chí | Docker | Containerd |
| Mục đích sử dụng | Công cụ all-in-one: build, pull, push image, quản lý container, compose, registry, network, volume… | Container runtime thuần túy chuyên quản lý vòng đời container (runtime) |
| Kiến trúc | Gồm CLI, Docker daemon, API, build image, network, volume… | Daemon nhẹ, tập trung vào runtime, không quản lý build image hoặc tiện ích cao cấp |
| CLI (giao diện dòng lệnh) | Đầy đủ, thân thiện, tích hợp nhiều tiện ích | Không có CLI gốc, thao tác qua ctr/nerdctl hoặc API gRPC |
| Build/push image | Hỗ trợ trực tiếp, tích hợp build/push lên registry dễ dàng | Không hỗ trợ build image, chỉ pull và chạy image có sẵn |
| Tích hợp/ứng dụng | Phát triển local, CI/CD pipeline, test, single-node hoặc multi-node project | Tích hợp sâu với Kubernetes, cloud native, sản xuất quy mô lớn |
| Mức độ mở rộng | Tốt, nhưng thường dùng cho dev/test hoặc pipeline nhỏ/trung bình | Tối ưu cho orchestration, vận hành container production, hiệu suất cao |
| Phạm vi quản lý | Toàn bộ vòng đời ứng dụng container, cả khâu packaging, mạng, các plugin… | Chỉ quản lý thực thi container ở mức hệ điều hành |
| Phù hợp sử dụng khi | Phát triển, kiểm thử, triển khai CI/CD, quản lý toàn diện | Cần lightweight, chỉ sử dụng runtime hoặc tích hợp nền tảng lớn |
Cài đặt và cấu hình containerd
Bạn cài đặt Containerd trên Ubuntu bằng câu lệnh:
sudo apt update
sudo apt install -y containerdTiếp đó bạn khởi tạo file cấu hình mặc định:
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.tomlBạn chỉnh sửa file cấu hình config.toml (ví dụ cấu hình systemd làm cgroup driver):
Bạn mở file bằng câu lệnh:
sudo nano /etc/containerd/config.tomlBạn tìm phần plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options và thêm hoặc sửa dòng sau:
SystemdCgroup = true
Bạn khởi động và kích hoạt dịch vụ containerd bằng câu lệnh:
sudo systemctl restart containerd
sudo systemctl enable containerd
sudo systemctl status containerdSử dụng công cụ dòng lệnh ctr quản lý containerd:
- Liệt kê các container đang chạy:
sudo ctr containers list- Liệt kê các images đã pull:
sudo ctr images list- Pull một image (ví dụ nginx):
sudo ctr images pull docker.io/library/nginx:latest- Tạo và chạy container từ image:
sudo ctr run -d --rm docker.io/library/nginx:latest nginx-container- Dừng container:
sudo ctr tasks kill nginx-container- Xóa container:
sudo ctr containers delete nginx-containerDocker tương tác với container như thế nào?
Để hiểu rõ hơn về cơ chế tương tác này, cần phân tích quy trình diễn ra khi lệnh docker run được thực thi:
- Sau khi người dùng xác nhận lệnh, Docker CLI sẽ chuyển tiếp lệnh
runcùng với toàn bộ các tham số dòng lệnh tới Docker daemon (dockerd) thông qua một lệnh gọi API REST. dockerdtiến hành phân tích cú pháp và xác thực yêu cầu, tiếp theo là kiểm tra sự hiện diện của image container trên hệ thống cục bộ; trong trường hợp image không có sẵn,dockerdsẽ thực hiện tải về từ registry đã được định cấu hình.- Một khi image đã ở trạng thái sẵn sàng,
dockerdsẽ chuyển giao quyền điều khiển chocontainerd, giao phó nhiệm vụ khởi tạo container từ image đó. - Tiếp theo,
containerdsẽ đảm nhiệm việc thiết lập môi trường cho container, một quy trình bao gồm các tác vụ nền tảng như cấu hình hệ thống tập tin, các giao diện mạng, và triển khai các tính năng cô lập cần thiết. containerdsau đó sẽ ủy thác tác vụ thực thi container choruncthông qua việc sử dụng một tiến trình đệm (shim process), và chính tiến trình này sẽ trực tiếp tạo và khởi chạy container.- Cuối cùng, sau khi container đã đi vào trạng thái hoạt động,
containerdsẽ đảm nhận vai trò giám sát liên tục trạng thái của container và quản lý toàn bộ vòng đời của nó một cách tương ứng.
Kết hợp Docker và containerd để đạt hiệu quả tối ưu
Docker giữ vai trò nền tảng trong suốt vòng đời của containerd, từ giai đoạn khởi tạo, quá trình đóng góp cho Cloud Native Computing Foundation (CNCF), cho đến các hoạt động phát triển về sau. Sự tham gia này đã góp phần thiết lập một tiêu chuẩn chung cho các container runtime (trình thực thi container), đồng thời gia tăng đáng kể sự đóng góp của cộng đồng mã nguồn mở vào quá trình phát triển của containerd. Hiện tại, Docker vẫn cam kết với sự phát triển của hệ sinh thái container mã nguồn mở thông qua việc bảo trì và liên tục cải tiến containerd.
Về mặt kiến trúc, containerd tập trung vào các chức năng vận hành cốt lõi của một container, trở thành một lựa chọn kỹ thuật tối ưu cho những tình huống đòi hỏi quyền truy cập vào các thành phần nội bộ ở tầng thấp (lower-level internals) hoặc các tính năng nâng cao.
Trong khi đó, Docker tận dụng containerd làm nền tảng cấp thấp để xây dựng một hệ sinh thái công cụ hoàn chỉnh, cung cấp trải nghiệm phát triển nhất quán cho toàn bộ chu trình từ xây dựng, thực thi, kiểm thử, xác minh đến chia sẻ container.
Build + Run
Trong môi trường phát triển, các công cụ như Docker Desktop, Docker CLI và Docker Compose cung cấp khả năng định nghĩa, xây dựng và vận hành các môi trường đơn hoặc đa container một cách hiệu quả. Những công cụ này có khả năng tích hợp chặt chẽ với các trình soạn thảo mã nguồn và môi trường phát triển tích hợp (IDE) phổ biến, cũng như được nhúng trực tiếp vào các quy trình Tích hợp liên tục/Triển khai liên tục (CI/CD).
Test
Một trong những thách thức cố hữu đối với lập trình viên là việc đảm bảo tính nhất quán của môi trường và kết quả kiểm thử. Công cụ Testcontainers giải quyết vấn đề này bằng cách loại bỏ các lo ngại về khả năng tái tạo (reproducibility) giữa các môi trường khác nhau như phát triển (dev), dàn dựng (staging), kiểm thử (testing) và sản phẩm (production). Testcontainers còn mang lại cơ chế sử dụng container để quản lý các phần phụ thuộc (dependency) một cách độc lập, cho phép thực thi kiểm thử song song và đơn giản hóa quá trình tích hợp vào hệ thống CI/CD.
Verification
Docker Scout hiện thực hóa phương pháp luận bảo mật “chuyển dịch sang trái” (shift-left) bằng cách tích hợp với Docker Desktop, Docker Hub và Docker CLI để thực hiện phân tích sâu hình ảnh container và tạo ra Danh mục Vật liệu Phần mềm (SBOM). Quá trình này trang bị cho các nhà phát triển công cụ cần thiết để chủ động phát hiện và khắc phục các lỗ hổng bảo mật, góp phần thiết lập một chuỗi cung ứng phần mềm được bảo vệ toàn diện.
Share
Docker Registry hoạt động như một dịch vụ kho lưu trữ tập trung và bảo mật, cho phép các nhà phát triển lưu trữ và phân phối hình ảnh container một cách có kiểm soát. Bằng việc cung cấp một điểm chia sẻ chung, cơ chế này đóng vai trò quan trọng trong việc duy trì tính nhất quán của các cấu phần phần mềm và tối ưu hóa hiệu suất trong toàn bộ vòng đời phát triển cũng như triển khai.
Vietnix cung cấp nền tảng Enterprise Cloud tối ưu cho môi trường containerd
Để khai thác tối đa sức mạnh của công nghệ container và các Container Runtime như containerd, doanh nghiệp cần một nền tảng hạ tầng (IaaS) mạnh mẽ, linh hoạt và được kiểm soát toàn diện. Vietnix cung cấp dịch vụ Enterprise Cloud, là giải pháp lý tưởng đáp ứng các yêu cầu khắt khe này.
Với Enterprise Cloud của Vietnix, bạn có toàn quyền kiểm soát hạ tầng, từ việc thiết lập các máy chủ ảo hiệu năng cao đến việc triển khai các cụm Kubernetes. Nền tảng của Vietnix được xây dựng trên CPU AMD EPYC và 100% ổ cứng NVMe, đảm bảo các container của bạn hoạt động ổn định và có khả năng mở rộng linh hoạt.
Thông tin liên hệ:
- Website: https://vietnix.vn/
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh
Câu hỏi thường gặp
Containerd được phát triển như thế nào?
Ban đầu, containerd là một thành phần bên trong Docker, chuyên xử lý phần runtime. Sau đó, để tối ưu cho môi trường cloud-native và các hệ thống orchestration lớn, containerd đã tách riêng, trở thành dự án độc lập dưới CNCF, đem lại khả năng mở rộng và tích hợp mạnh mẽ với các nền tảng như Kubernetes.
Containerd có giao diện dòng lệnh (CLI) không?
Có. Containerd cung cấp một công cụ dòng lệnh tên là ctr. Công cụ này được thiết kế chủ yếu cho việc gỡ lỗi (debug) và phát triển, cho phép tương tác trực tiếp với daemon containerd mà không cần thông qua các lớp trừu tượng cấp cao hơn như Docker.
Tìm mã nguồn của containerd ở đâu?
Mã nguồn và trang dự án chính thức của containerd được đặt trên GitHub tại địa chỉ: https://github.com/containerd/containerd.
Khi nào nên lựa chọn sử dụng containerd thay vì Docker?
Containerd thích hợp khi bạn triển khai môi trường production có khối lượng lớn container, cần runtime nhẹ, hiệu suất cao, hoặc cần tích hợp sâu với hệ thống orchestration như Kubernetes. Docker phù hợp hơn với môi trường phát triển, test, pipeline CI/CD nhỏ/trung bình do có nhiều tiện ích đi kèm.
Có thể tích hợp containerd với Kubernetes không?
Hoàn toàn có thể. Kubernetes sử dụng containerd làm runtime tiêu chuẩn giúp quản lý container linh hoạt, mở rộng dễ dàng, đảm bảo hiệu suất và khả năng tự động hóa (orchestration) cho môi trường ảo hóa doanh nghiệp.
Containerd liên quan gì tới Docker?
Docker đã tạo ra containerd, sau đó tách nó ra và đóng góp cho cộng đồng để trở thành một tiêu chuẩn công nghiệp. Ngày nay, Docker sử dụng lại chính “đứa con” của mình như một thành phần nền tảng, tạo nên một mối quan hệ cộng sinh: Docker cung cấp trải nghiệm người dùng và bộ công cụ toàn diện, trong khi containerd cung cấp sức mạnh thực thi cốt lõi, ổn định và hiệu suất cao ở phía dưới.
Containerd là một mắt xích quan trọng trong hệ sinh thái container hiện đại, giúp quản lý vòng đời container một cách hiệu quả, an toàn và linh hoạt. Việc hiểu rõ cơ chế hoạt động cũng như điểm khác biệt giữa containerd và các giải pháp khác như Docker sẽ giúp bạn xây dựng hệ thống ứng dụng ổn định, tối ưu tài nguyên và đáp ứng nhanh các nhu cầu mở rộng khi doanh nghiệp phát triển.
















