什么是containerd,Docker和Containerd的区别

举报
object 发表于 2024/10/15 15:55:51 2024/10/15
【摘要】 一、背景曾经遇到一个机器,明明使用了容器技术,使用容器部署服务,由于知识有限,完全不知道怎么部署上去的。尝试了很多docker命令,完全没用,我还很奇怪,为什么能使用docker却可以禁用docker命令。也没有合适的人问,不过一次偶然,知道了原来容器技术除了docker还有其他的。例如containerd,当然也是docker的一个组件,不过命令完全不同二、什么是containerdcon...

一、背景

曾经遇到一个机器,明明使用了容器技术,使用容器部署服务,由于知识有限,完全不知道怎么部署上去的。尝试了很多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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。