什么是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个月内不可修改。