+1

Docker CLI, ctr và crictl

Kể từ version 1.24, Kubernetes không còn hỗ trợ Docker như là một container runtime (là thành phần chịu trách nhiệm quản lý và thực thi các container). Từ đây, nhiều bạn sẽ khá bối rối khi sử dụng các command như docker, ctrcrictl và cách phân biệt chúng. Cùng tìm hiểu nhé.

docker (ở đây chỉ nói đến Docker CLI) là một công cụ dòng lệnh để quản lý container thông qua Docker. Đây là công cụ ra đời sớm nhất và cũng có nhiều chức năng để quản lý container nhất.

ctrcontainerd là một công cụ quản lý container tối giản và tập trung vào chức năng cơ bản để quản lý container, do đó CTR – một công cụ CLI giao tiếp với containerd để quản lý container, sẽ ít chức năng hơn docker.

crictl là một công cụ để quản lý container thông qua Container Runtime Interface (CRI). CRI là một giao diện tiêu chuẩn cho phép Kubernetes giao tiếp với các container runtime khác nhau, chẳng hạn như containerd, CRI-O, … Đây là công cụ ít chức năng nhất so với docker clictr. Nếu bạn sử dụng containerd làm container runtime cho Kubernetes thì crictl sẽ chỉ tương tác với namespace k8s.io của containerd. Do đó lệnh crictl sẽ tương đương.

crictl <...> = ctr -n k8s.io <...> 

Đây là bảng tóm tắt những khác biệt chính giữa docker, ctr và crictl

Tên docker CLI ctr crictl
Mục đích Quản lý container thông qua Docker Quản lý container trực tiếp qua containerd Quản lý container thông qua CRI của Kubernetes
Người sử dụng Người dùng cần quản lý trực tiếp container qua docker Người dùng cần quản lý trực tiếp container qua containerd Quản trị viên và nhà phát triển Kubernetes
Command List, inspect, run, stop, remove container, execute command vào container, pull, remove, update tag, import, build image List, inspect, run, stop, remove container, execute command vào container, pull, remove, update tag, import image List, inspect, run, stop, remove container, execute command vào container, pull, remove image
Namespace Không quản lý theo namespace Quản lý theo namespace Sẽ chỉ tương tác với namespace k8s.io của containerd

Đây là bảng so sánh những command giữa docker, ctr và crictl

Functions Docker CLI Containerd CLI Crictl CLI
Image List docker images ctr -n k8s.io image ls crictl images
Image Export docker save -o app.tar app:1.2.0 ctr image export app.tar app:1.2.0
Image Import docker load -i app.tar ctr image import app.tar
Image Pull docker pull redis:latest ctr -n k8s.io images pull docker.io/library/redis:latest crictl pull redis:latest
Image Push docker push redis:latest ctr -n k8s.io images push docker.io/library/redis:latest crictl push redis:latest
Image Tag Update docker tag redis:latest repo-name/redis:latest ctr -n k8s.io images tag docker.io/library/redis:latest repo-name/redis:latest
Image Delete docker rmi redis:latest ctr -n k8s.io images rm docker.io/library/redis:latest crictl rmi redis:latest
Container Create docker create --name redis redis:latest ctr -n k8s.io container create docker.io/library/redis:latest redis
Container Create Run docker run -d --name app image-app:1.2.0 ctr -n k8s.io run -d image-app:1.2.0 app
Container List docker ps ctr -n k8s.io container list crictl ps
Container Start docker start app ctr -n k8s.io task start app crictl start
Container Pause docker pause app ctr -n k8s.io task pause app
Container Stop docker stop app ctr -n k8s.io task kill app crictl stop
Container Delete docker rm [-f] app ctr -n k8s.io container rm [-f] app crictl rm
Container Detail Inspect docker inspect app ctr -n k8s.io c info app crictl inspect app
Container Attach docker attach app ctr -n k8s.io task attach app crictl attach
Run cmd inside Container docker exec -it app sh ctr -n k8s.io task exec -t exec-id pid app sh crictl exec -it app sh
Container Status docker top app ctr -n k8s.io task metric app crictl stats
Container Log docker logs –tail 50 app ctr -n k8s.io event crictl logs
Copy files from Container docker cp
Build image docker build
Login to repository docker login

See yaaa,


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí