什么是containerd,Docker和Containerd的区别
一、背景
曾经遇到一个机器,明明使用了容器技术,使用容器部署服务,由于知识有限,完全不知道怎么部署上去的。尝试了很多docker命令,完全没用,我还很奇怪,为什么能使用docker却可以禁用docker命令。也没有合适的人问,不过一次偶然,知道了原来容器技术除了docker还有其他的。例如containerd,当然也是docker的一个组件,不过命令完全不同
二、什么是containerd
containerd是k8s生态系统的标配,是docker团队开源的容器运行时,它专注于提供轻量级、高性能的容器运行环境。作为一个纯粹的容器运行,具有更小的资源占用,更快的启动时间。
Containerd 负责干下面这些事情:
- 管理容器的生命周期(从创建容器到销毁容器)
- 拉取/推送容器镜像
- 存储管理(管理镜像及容器数据的存储)
- 调用 runC 运行容器(与 runC 等容器运行时交互)
- 管理容器网络接口及网络
容器运行时接口(CRI)
容器运行时接口,简称CRI。CRI是一个插件接口,它使kubelet能够使用各种容器运行时,无需重新编译集群组件。你需要在集群中的每个节点上都有一个可以正常工作的容器运行时,容器运行时接口(CRI)是kubelet和容器运行时之间通信的主要协议。
当前支持的 CRI 后端
我们最初在使用 Kubernetes 时通常会默认使用 Docker 作为容器运行时,其实从 Kubernetes 1.5 开始已经支持 CRI,通过 CRI 接口可以指定使用其它容器运行时作为 Pod 的后端,目前支持 CRI 的后端有:
- cri-o:cri-o 是 Kubernetes 的 CRI 标准的实现,并且允许 Kubernetes 间接使用 OCI 兼容的容器运行时,可以把 cri-o 看成 Kubernetes 使用 OCI 兼容的容器运行时的中间层。
- cri-containerd:基于 Containerd 的 Kubernetes CRI 实现,Containerd是一个进程,是CRI-Containerd的实现
- rkt:由 CoreOS 主推的用来跟 docker 抗衡的容器运行时
- frakti:基于 hypervisor 的 CRI
- docker:Kuberentes 最初就开始支持的容器运行时,目前还没完全从 kubelet 中解耦,Docker 公司同时推广了 OCI 标准
常用命令
ctr 是 containerd 的一个客户端工具。 crictl 是 CRI 兼容的容器运行时命令行接口,可以使用它来检查和调试 k8s 节点上的容器运行时和应用程序。 ctr -v 输出的是 containerd 的版本,crictl -v 输出的是当前 k8s 的版本,从结果显而易见你可以认为 crictl 是用于 k8s 的。
|
docker |
ctr(containerd) |
crictl(kubernetes) |
查看运行的容器 |
docker ps |
ctr task ls/ctr container ls |
crictl ps |
查看镜像 |
docker images |
ctr image ls |
crictl images |
查看容器日志 |
docker logs |
无 |
crictl logs |
查看容器数据信息 |
docker inspect |
ctr container info |
crictl inspect |
查看容器资源 |
docker stats |
无 |
crictl stats |
启动/关闭已有的容器 |
docker start/stop |
ctr task start/kill |
crictl start/stop |
运行一个新的容器 |
docker run |
ctr run |
无(最小单元为 pod) |
修改镜像标签 |
docker tag |
ctr image tag |
无 |
创建一个新的容器 |
docker create |
ctr container create |
crictl create |
导入镜像 |
docker load |
ctr image import |
无 |
导出镜像 |
docker save |
ctr image export |
无 |
删除容器 |
docker rm |
ctr container rm |
crictl rm |
删除镜像 |
docker rmi |
ctr image rm |
crictl rmi |
拉取镜像 |
docker pull |
ctr image pull |
ctictl pull |
推送镜像 |
docker push |
ctr image push |
无 |
在容器内部执行命令 |
docker exec |
无 |
crictl exec |
原文链接:https://www.51cto.com/article/765823.html
- 点赞
- 收藏
- 关注作者
评论(0)