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, ctr và crictl 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.
ctr – containerd 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ụ để quản lý các container trực tiếp thông qua containerd, sẽ ít chức năng hơn docker.
crictl là một công cụ để quản lý vùng chứa 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 cli và ctr. 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 | Quản lý containers 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 |
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 |