ContAInerd 是什么Containerd是一个开源的容器运行时工具,它为容器提供了核心功能 。作为一个独立的项目,Containerd旨在管理容器的核心功能,如镜像管理、容器生命周期管理、网络和存储管理等 。它是由Docker项目中的核心组件分离出来的,用于提供一个更加轻量级、独立且可嵌入的容器运行时环境 。Containerd被设计为一个通用的核心容器运行时,因此许多容器平台和工具都可以构建在其之上 , 包括Kube.NETes、Docker等 。Containerd并不是直接面向终端用户的工具 , 而是为了提供稳定、可靠的容器基础设施 , 让开发者和其他项目可以基于它构建更高级别的容器化解决方案 。
与 Docker 的关系Docker和Containerd之间有一种父子关系 。Containerd实际上是从Docker项目中拆分出来的,是Docker引擎中的核心组件之一 。具体来说,Docker Engine在其架构中使用了一种插件化的方式,而Containerd就是其中一个重要的组件 。Docker Engine的架构涵盖了各种功能模块,其中包括容器构建、镜像管理、容器运行时、网络和存储管理等 。Containerd被用作Docker Engine中负责容器生命周期管理和基本操作的核心组件之一 。因此,Docker实际上是建立在Containerd之上的应用层工具 。当你使用Docker命令时,它会与Containerd交互以执行诸如创建、运行和管理容器等操作 。然而,Containerd本身更加通用和抽象化 , 可以为其他容器平台和工具提供底层支持,而不仅限于Docker 。总体而言,Docker是一个集成了各种工具和功能的容器平台,而Containerd是其中一个核心组件,负责提供基本的容器运行时功能 。
安装Containerd系统信息[root@localhost ~]# cat /etc/redhat-release centos linux release 7.2.1511 (Core)
二进制安装下载地址?https://github.com/containerd/containerd最新版本1.7.10
[root@localhost ~]# wget https://Github.com/containerd/containerd/releases/download/v1.7.10/cri-containerd-1.7.10-linux-amd64.tar.gz[root@localhost ~]# tar xf cri-containerd-1.7.10-linux-amd64.tar.gz-C /
生成Containerd配置[root@localhost ~]# mkdir /etc/containerd[root@localhost ~]# containerd config default > /etc/containerd/config.toml查看配置[root@localhost ~]# cat/etc/containerd/config.toml安装好containerd 之后,Containerd的配置文件中有如下两项配置:root = /var/lib/containerdstate = "/run/containerd"root配置的目录是用来保存持久化数据的目录 , 包括content, snapshot, metadata和runtimestate 是用来保存运行时的临时数据的,包括 sockets、pid、挂载点、运行时状态以及不需要持久化的插件数据 。
Containerd开机自启[root@localhost ~]# systemctl enable --now containerdCreated symlink from /etc/systemd/system/multi-user.target.wants/containerd.service to /etc/systemd/system/containerd.service.[root@localhost ~]# systemctl start containerd验证其版本[root@localhost ~]# containerd --versioncontainerd github.com/containerd/containerd v1.7.10 4e1fe7492b9df85914c389d1f15a3ceedbb280ac
runc验证默认 Containerd 安装好就会自带一个 runc 命令
执行runc命令,如果有版本号返回则为正常[root@localhost ~]# runc -vrunc version 1.1.10commit: v1.1.10-0-g18a0cb0fspec: 1.0.2-devgo: go1.20.10libseccomp: 2.5.4
如果运行runc命令时提示:runc: error while loading shared libraries: ?libseccomp.so.2: cannot open shared object file: No such file or directory , 则表明runc没有找到libseccomp,需要安装 libseccomp libseccomp安装
[root@localhost ~]# wget https://github.com/opencontainers/runc/releases/download/v1.1.5/libseccomp-2.5.4.tar.gz[root@localhost ~]# tar xf libseccomp-2.5.4.tar.gz[root@localhost ~]# cd libseccomp-2.5.4/[root@localhost ~]# ./configure[root@localhost ~]# make && make install查找的到 即安装成功[root@localhost ~]# find / -name "libseccomp.so"/root/libseccomp-2.5.4/src/.libs/libseccomp.so /usr/local/lib/libseccomp.so
做软链
[root@localhost ]# ln -s /usr/local/lib/libseccomp.so /lib64/libseccomp.so.2再次查看[root@localhost ]# runc -vrunc version 1.1.10commit: v1.1.10-0-g18a0cb0fspec: 1.0.2-devgo: go1.20.10libseccomp: 2.5.4
也可以二进制runc安装?https://github.com/opencontainers/runc最新版本:1.1.10
[root@localhost ~]# wget https://github.com/opencontainers/runc/releases/download/v1.1.10/runc.amd64[root@localhost ~]# chmod +x runc.amd64查找containerd安装时已安装的runc所在的位置,然后替换[root@localhost ~]# which runc /usr/local/sbin/runc替换containerd已安装的runc[root@localhost ~]# mv runc.amd64 /usr/local/sbin/runc执行runc命令,如果有命令帮助则为正常[root@localhost ~]# runc -vrunc version 1.1.10commit: v1.1.10-0-g18a0cb0fspec: 1.0.2-devgo: go1.20.10libseccomp: 2.5.4
推荐阅读
- 一文了解TikTok店铺类型,美国本土店VS跨境店有什么区别?如何入驻?
- 光影星播客 | 演员胡连馨带你解锁CCTV6一周佳片
- 掌握了解网站优化特点,才能网站的权重稳步增加
- 五分钟掌握22种常见象棋布局
- 一文看懂DNS及其工作原理
- 什么是SEO?一文了解SEO的本质、意义和潜力
- 一文带你彻底掌握阻塞队列!
- 快速上手 PostgreSQL:掌握PSQL 命令行工具连接技巧
- 掌握C++模板的艺术:类型参数、默认值和自动推导
- Python神器解密:掌握property特性巧管理属性