Containerd本地调试环境搭建

最近在学习常用的容器运行时 containerd, 本篇我就来介绍如何本地构建 containerd 进行调试开发,主要介绍2种 常规方式和使用容器构建,由于本地环境限制,我主要是使用 docker 搭建本地调试环境。 非容器 build 这里先开始介绍常规直接从源码本地构建的方式。 构建环境要求 1 go1.19.x及以上版本 2 Protoc 3.x+ 3 适用于您的发行版的 Btrfs 标头和库。请注意,可以通过构建标签禁用构建 btrfs 驱动程序no_btrfs,从而删除此依赖项。 前面2点相信大家都很清楚,第三点的 Btrfs 是什么呢?Btrfs是一种现代的Linux写时复制(COW)文件系统,旨在实现先进的功能,同时也注重容错、修复和简易管理。 build 1 拉取containerd 源代码至本地 2 构建 进入源代码根目录,执行一下命令: cd containerd make 执行后,会在 ./bin/ 目录下生成所有项目的二进制文件。 如果你需要修改 gRPC API ,修改后需要使用 protoc 编译生成新的代码: make generate docker 容器构建 接下来讲解怎么通过 docker 构建本地 containerd 调试环境。 构建要求 1 go1.19.x及以上版本 2 Protoc 3.x+ 3 docker 构建 进入源代码根目录 cd containerd, 执行以下命令: docker run -it -v ${PWD}/containerd:/go/src/github.com/containerd/containerd -e GOPATH=/go -w /go/src/github.com/containerd/containerd golang:1.19 make && make install 这将会进行 containerd 的构建,过了一会发现构建失败,错误信息如下: ...

二月 19, 2023 · overstarry

containerd 安装和客户端简单使用

介绍 containerd 是一个用于管理容器生命周期的开源容器守护程序,是 Docker 引擎中的核心组件之一。它负责容器的创建、启动、停止、销毁等操作,并提供了对容器的基本管理功能,如镜像管理、网络管理、存储管理等。与 Docker 引擎相比,containerd 更加轻量级,同时也支持多种容器运行时,如 runc、gVisor、Kata Containers 等。由于其简单、可扩展和可移植等优点,containerd 也成为了许多容器平台和工具的基础组件之一。 安装 本文只介绍 Linux 系统下的安装方式。 Linux 下的 deb 和 rpm 包 containerd.io 由 docker 官方进行分发,通过查阅官方文档,具体的安装步骤如下: 1 更新 apt 软件包索引并安装必要的软件包,以便 apt 能够使用 HTTPS 仓库。 sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release 2 添加 Docker’s 官方 GPG key: sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 3 设置存储库 ...

二月 11, 2023 · overstarry

Containerd 配置私有仓库

问题 今天在使用 K8S 部署应用时,遇到容器镜像拉取失败的错误 imagepullbackoff ,通过对应用整体资源清单的分析,发现是使用了使用私有仓库镜像,但是没有配置私有仓库,这样就会导致容器无法拉取镜像,这个问题可以通过配置私有仓库来解决。 由于我使用了 Containerd 容器管理器,所以我需要配置私有仓库,并且配置私有仓库的地址为:https://docker.xx.vip. Containerd 没有 docker 配置私有仓库方便,需要修改 Containerd 配置文件进行配置,配置文件在 /etc/containerd/config.toml 中。 配置私有仓库 Containerd 默认没有此配置文件,需要通过命令导出配置文件 containerd config default> /etc/containerd/config.toml (需要提前创建目录)。 接下来我来讲解如何配置私有镜像仓库。 打开配置文件 找到 [plugins.“io.containerd.grpc.v1.cri”.registry] 修改相应配置,具体配置如下: [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.xx.vip"] endpoint = ["https://docker.xx.vip"] [plugins."io.containerd.grpc.v1.cri".registry.auths] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."docker.xx.vip".auth] username = "xx" password = "xx" [plugins."io.containerd.grpc.v1.cri".registry.headers] 重启 containerd systemctl restart containerd.service 查看 containerd systemctl status containerd.service 回到 K8S 重新拉取镜像,可以看到镜像已经顺利拉取 参考 https://colstuwjx.github.io/2018/02/%E5%8E%9F%E5%88%9B-%E5%B0%8F%E5%B0%9D-containerd%E4%B8%80/ https://github.com/containerd/containerd/issues/5246

十一月 19, 2021 · overstarry