[TOC]
根据 [interacting-with-containerd-via-cli](https://github.com/containerd/containerd/blob/main/docs/getting-started.md#interacting-with-containerd-via-cli) 一文,目前主要有三种客户端工具和containerd交互:
![](https://img.kancloud.cn/7e/d8/7ed8121422f813b32cf342df0459c9ee_2048x546.png)
一般推荐使用nerdctl。
### **ctr**
`ctr`是`containerd`的一个客户端工具,在安装containerd时就会安装ctr。`ctr -v`输出的是`containerd`的版本。
由于 Containerd 有 namespaces 的概念,`ctr`客户端 主要区分了 3 个命名空间分别是`k8s.io`、`moby`和`default`。
使用`ctr`看镜像和容器列表就需要加上`-n `参数,如果没有指定`-n`则默认为default命名空间。如:
```
$ ctr -n k8s.io image pull
$ ctr -n k8s.io image list
$ ctr -n k8s.io run --rm -t docker.io/library/busybox:latest test-kata uname -r
$ ctr -n k8s.io container list
```
### **crictl**
crictl会在安装k8s的时候自动安装,`ctr image pull` 拉取的镜像默认放在`default`命名空间,而 `crictl pull` 和 kubelet 默认拉取的镜像都在 k8s.io 命名空间下。
在使用crictl时,需要先配置`/etc/crictl.yaml`
```
runtime-endpoint:unix:///run/containerd/containerd.sock
```
### **nerdctl**
nerdctl也是containerd项目开发的一个客户端工具,它也可以指定containerd的命名空间。nerdctl的命令和docker的很相似。但是它也需要增加 -n 指定命令空间。
### **常用命令对比**
| - | docker | ctr | crictl | nerdctl |
| --- | --- | --- | --- | --- |
| 下载镜像 | docker pull | ctr image pull | crictl image pull | - |
| 查看镜像 | docker images | ctr image list | crictl image list | - |
| 删除镜像 | docker images rm | ctr image rm | crictl rmi | - |
| 运行容器 | docker run | ctr run |
### **参考**
* https://github.com/containerd/containerd/blob/main/docs/getting-started.md#interacting-with-containerd-via-cli
* https://www.51cto.com/article/717474.html
* https://github.com/projectatomic/containerd/blob/master/docs/cli.md
* https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md
* https://github.com/containerd/nerdctl
- 安装
- 在线安装
- 离线安装
- 下载镜像
- 下载DockerHub镜像
- 下载Google镜像
- 阿里云镜像中心
- 下载ARM镜像
- 容器命名空间
- Linux命名空间概述
- 根据PID快速定位到容器
- 进入到容器的命名空间
- Dockerfile
- 基本语法
- 前台运行
- 镜像存储
- 本地存储
- Registry中的存储
- 如何判断两个镜像是否是同一个
- Registry
- Notification
- Auth
- 基本原理
- Token认证的设计
- API
- Pull镜像
- Push镜像
- Docker设置代理
- 日志
- 磁盘占用与清理
- Docker选项与K8S的Yaml
- 运维总结
- 常用命令
- DockerCompose
- 构建ARM版本
- 跨架构
- x86架构下构建arm64镜像
- Containerd
- ctr-crictl-nerdctl
- ctr
- Insecure-Registry
- Kata
- 构建OS镜像
- 进入到kata虚机