containerd 介绍

这篇具有很好参考价值的文章主要介绍了containerd 介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是containerd

        containerd是一个工业级标准的容器进行时,它可以负责干下面这些事情:

                1、管理容器的生命周期(从创建容器到销毁容器)   

                2、拉取和推送镜像

                3、存储管理(管理镜像及容器数据的存储)

                4、调用runc运行容器(y)

        其实,在以前我们使用的docker中就有containerd。当我们用docker创建容器的时候,并不是docker直接创建容器,而是去调用containerd,然后创建containerd-shim进程,通过该进程去调用runc去真正创建容器。这时我们发现,真正容器相关的操作其实是 containerd 在做。

        而对于Kubernetes而言,只要符合CRI接口标准的容器运行时,都可以对接kubernetes平台。旧版本中Containerd要去适配kubernetes还需通过一个单独的CRI-Containerd 进程来完成,但在Containerd 1.0版本后,直接把适配逻辑作为插件的方式集成到了Containerd主进程中,从而使调用更加简洁,这也是我们为什么选择containerd来做为kubernetes 容器运行时的原因。(可以见下图)

containerd镜像加速,Linux,docker,kubernetes,容器

二、containerd架构

containerd镜像加速,Linux,docker,kubernetes,容器

        这是containerd官网提供的架构图,可以看出来containerd采用的也是C/S架构 (C/S 架构指的是客户端/服务器架构(Client/Server Architecture),是一种网络通信模型,将应用程序分为客户端和服务器两部分,客户端和服务器之间通过网络进行通信和协作。)。服务端通过 unix domain socket 暴露低层的 GRPC API 接口出去,客户端通过这些 API 管理节点上的容器,每个 containerd 只负责一台机器,Pull 镜像,对容器的操作(启动、停止等),网络,存储都是由 containerd 完成。具体运行容器由 runc 负责,实际上只要是符合 OCI 规范的容器都可以支持。

        整个containerd架构大体上可以分为三层:

                1、Backend 在整个架构最底层,负责与系统做交互

                2、Cor (Container Object Runtime) 层是指容器运行时,主要包含Service与Metadata两块,是整个containerd系统的核心组件之一,它提供了容器运行时所需的各种功能,包括容器生命周期管理、容器文件系统管理、容器网络管理、容器资源管理、容器安全管理、容器事件监控和容器日志管理等。

                3、API层通过GRPC协议为客户端提供API(容器运行时的应用程序接口),主要作用是提供容器和镜像管理的高级功能,以及与其它容器相关的操作,例如网络和存储等。

三、containerd安装

# 获取YUM源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 使用YUM安装containerd 安装Containerd.io软件,即可安装Containerd
yum -y install containerd.io

# 使用rpm -qa命令查看是否安装
rpm -qa | grep containerd
containerd.io-1.4.12-3.1.el7.x86_64

# 设置containerd服务启动及开机自启动
systemctl enable containerd
systemctl start containerd

# 查看containerd服务启动状态
systemctl status containerd

# 安装Containerd时ctr命令亦可使用,ctr命令主要用于管理容器及容器镜像等。
# 使用ctr命令查看Containerd客户端及服务端相关信息。
ctr version

四、containerd目录结构

-  /bin/                              # containerd二进制文件

-  /etc/containerd/            # containerd配置文件

    - config.toml                # containerd的主要配置文件

    - config.toml.orig         # containerd的主要配置文件的备份文件

- lib/                                 # containerd库文件

    - containerd/

    - io.containerd.grpc.*   # containerd的GRPC API定义

    - runtime/                     # 容器运行时接口和实现

    - services/                    # containerd的核心服务,例如image、snapshot、task等

- run/containerd/              # containerd的运行时目录,例如pid文件、socket文件等

- var/lib/containerd/          # containerd的数据存储目录,例如镜像、快照、元数据等

        其中,/bin/目录包含了containerd二进制文件,可以通过运行containerd启动它。/etc/containerd/目录包含了containerd的配置文件,其中config.toml是主要配置文件。lib/目录包含了containerd的库文件,包括GRPC API定义、容器运行时接口和实现以及核心服务等。run/containerd/目录包含了containerd的运行时文件,例如pid文件、socket文件等。var/lib/containerd/目录包含了containerd的数据存储目录,例如镜像、快照、元数据等。

        这些目录和文件的具体结构可能会因为不同的部署环境和版本而有所差异,但是它们的基本组成部分应该是差不多的。

五、containerd配置镜像加速

        containerd 镜像加速配置有以下四种方法:

        1、直接在 /etc/containerd/config.toml 文件中添加配置,配置好后重启containerd服务:

方法 一 :

[root@k8s-containerd-m ~]# vim /etc/containerd/config.toml

……

  [plugins."io.containerd.grpc.v1.cri".registry.mirrors]      
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
          endpoint=["https://mn3d3160.mirror.aliyuncs.com"]



方法 二 :

[root@k8s-containerd-m ~]# vim /etc/containerd/config.toml

……

    [plugins."io.containerd.grpc.v1.cri".registry]
      config_path = "/etc/containerd/certs.d"

[root@k8s-containerd-m ~]# mkdir /etc/containerd/certs.d/docker.io -pv

[root@k8s-containerd-m ~]#

[root@k8s-containerd-m ~]# cat > /etc/containerd/certs.d/docker.io/hosts.toml << EOF

server = "https://docker.io"

[host."https://xxxxxxxx.mirror.aliyuncs.com"]

   capabilities = ["pull", "resolve"]

EOF

[root@k8s-containerd-m ~]# systemctl restart containerd

        2、使用环境变量指定镜像加速地址,然后启动 containerd 服务或容器时,会自动使用该环境变量中指定的镜像加速地址。

export CONTAINER_REGISTRY_MIRROR=https://mn3d3160.mirror.aliyuncs.com

        3、通过 containerd systemd 配置文件来配置镜像加速器:

        在 containerd systemd 配置文件中添加 --registry-mirror 参数并将其设置为所需的镜像加速器地址。文章来源地址https://www.toymoban.com/news/detail-598823.html

[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network-online.target

[Service]
ExecStartPre=/sbin/modprobe overlay
ExecStart=/usr/bin/containerd --config /etc/containerd/config.toml --registry-mirror=https://mn3d3160.mirror.aliyuncs.com
KillMode=process
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity

[Install]
WantedBy=multi-user.target

到了这里,关于containerd 介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)

    目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd)  5.master2节点迁移容器运行时(docker → containerd)  6.node1节点容器运行时迁移(docker → containerd)  7.升级集群计划(v1.23.14 → v1.24.1) 8.升级master1节点版本(v1.24.1) 9.升级master2节点版本

    2024年02月03日
    浏览(48)
  • 【Docker】Docker容器与虚拟机的对比、三要素、架构和镜像加速器的详细讲解

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL,感兴趣的小伙伴可以看看。 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️万物从心起,心动则万物动🏄

    2024年02月15日
    浏览(48)
  • Docker下载镜像(配置阿里云加速器)和容器的基本使用(有指令解释哦~)

    📜没有安装Dokcer的可以去看一下我的另一篇文章 || 已经安装的可以根据文章内容进行操作或者浏览 (3条消息) Docker的三大核心概念与安装docker(Dokcer 入门)_doucker安装_我敲BUG的博客-CSDN博客 目录  前言 :文章的指令必须安装Docker才能执行哦~ 📜没有安装Dokcer的可以去看一下我

    2024年02月02日
    浏览(59)
  • 【Java】微服务——Docker容器部署(docker安装,docker配置镜像加速,DockerHub,docker基本操作,Dockerfile自定义镜像.Docker-Compose)

    微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题 1.1.1.应用部署的环境问题 大型项目组件较多,运

    2024年02月04日
    浏览(46)
  • Containerd容器镜像管理

     Containerd容器镜像管理命令 docker使用docker images命令管理镜像 单机containerd使用ctr images命令管理镜像,containerd本身的CLI k8s中containerd使用crictl images命令管理镜像,Kubernetes社区的专用CLI工具 镜像也是有命名空间的(指定命名空间) containerd支持oci标准的镜像,所以可以直接使用

    2024年02月08日
    浏览(30)
  • Kubernetes ≥ 1.25 Containerd配置Harbor私有镜像仓库

    containerd 实现了 kubernetes 的 Container Runtime Interface (CRI) 接口,提供容器运行时核心功能,如镜像管理、容器管理等,相比 dockerd 更加简单、健壮和可移植。 从docker过度还是需要一点时间慢慢习惯的,今天来探讨containerd 如何从无域名与权威证书的私有仓库harbor,下载镜像! c

    2024年01月15日
    浏览(34)
  • Linux Centos 配置 Docker 国内镜像加速

    在使用 Docker 进行容器化部署时,由于国外的 Docker 镜像源速度较慢,我们可以配置 Docker 使用国内的镜像加速器,以提高下载和部署的效率。本文将介绍如何在 CentOS 系统上配置 Docker 使用国内镜像加速。 首先,我们需要在 CentOS 系统上安装 Docker。可以使用以下命令进行安装

    2024年02月01日
    浏览(39)
  • 热门的容器技术:Docker 和 Kubernetes 介绍

    目录 一、什么是容器技术 二、Docker 介绍 三、Kubernetes介绍 四、Docker 和 Kubernetes的区别 容器技术指的是一种操作系统级的虚拟化技术,用于将应用程序及其依赖项打包成一个独立的、可移植的运行环境,称为容器。容器技术通过隔离应用程序之间的运行环境,使得每个容器在

    2024年02月03日
    浏览(36)
  • [Docker]二.Docker 镜像,仓库,容器介绍以及详解

    通俗来讲:镜像相当于VM虚拟机中的ios文件,容器相当于虚拟机系统,仓库相当于系统中的进程或者执行文件,容器是通过镜像创建的 Docker 镜像就是一个 Linux 的文件系统( Root FileSystem ),这个文件系统里面包含可以运行在 Linux 内核的程序以及相应的数据,这里要强调一下镜像的两

    2024年02月03日
    浏览(37)
  • 使用containerd作为容器运行时拉取镜像的方法

    k8s v1.24版本后默认使用containerd作为容器运行时,很多镜像库使用的是 gcr.io ,国内可能无法成功拉取。接下来将通过搭建 Metrics Server 来演示该情况的解决方法。 components.yaml 我们需要使用 ctr 或者 crictl 来代替docker命令,但是 crictl 是没有类似 docker tag 功能的。当我们使用 ct

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包