当前位置: 首页 > news >正文

Containerd容器运行时介绍与应用

以下是Containerd的详细部署指南,涵盖主流 Linux 发行版的安装和基础配置。

一、安装方式

1. 二进制包安装(推荐)

适用于大多数 Linux 发行版,获取最新版本。

# 下载最新版本(请从 GitHub Release 页面获取最新版本号)VERSION="1.7.19"wgethttps://github.com/containerd/containerd/releases/download/v${VERSION}/containerd-${VERSION}-linux-amd64.tar.gz# 解压到系统目录sudotarCxzvf /usr/local containerd-${VERSION}-linux-amd64.tar.gz# 下载并安装 runc(必需组件)wgethttps://github.com/opencontainers/runc/releases/download/v1.1.12/runc.amd64sudoinstall-m755runc.amd64 /usr/local/sbin/runc# 下载并安装 cni-plugins(网络插件)wgethttps://github.com/containernetworking/plugins/releases/download/v1.4.0/cni-plugins-linux-amd64-v1.4.0.tgzsudomkdir-p/opt/cni/binsudotarCxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.4.0.tgz

2. 通过包管理器安装

Ubuntu/Debian
# 安装依赖sudoapt-getupdatesudoapt-getinstall-yca-certificatescurl# 添加 Docker 仓库(包含 containerd)curl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpgecho"deb [arch=$(dpkg --print-architecture)signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu$(lsb_release-cs)stable"|sudotee/etc/apt/sources.list.d/docker.list>/dev/null# 安装 containerdsudoapt-getupdatesudoapt-getinstall-ycontainerd.io
CentOS/RHEL/Rocky Linux
# 安装依赖sudoyuminstall-yyum-utils# 添加 Docker 仓库sudoyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装 containerdsudoyuminstall-ycontainerd.io# 或者直接安装 containerd(不通过 Docker 仓库)sudoyuminstall-yhttps://github.com/containerd/containerd/releases/download/v1.7.19/containerd-1.7.19-1.el7.x86_64.rpm

3. 通过 Kubernetes 工具安装

如果用于 Kubernetes 集群:

# 使用 kubeadm 工具安装 containerdcat<<EOF|sudotee/etc/modules-load.d/containerd.confoverlay br_netfilter EOFsudomodprobe overlaysudomodprobe br_netfilter

二、配置 Containerd

1. 生成默认配置文件

# 创建配置目录sudomkdir-p/etc/containerd# 生成默认配置containerd config default|sudotee/etc/containerd/config.toml

2. 关键配置修改

编辑/etc/containerd/config.toml

# 修改 systemd cgroup 驱动(推荐用于 Kubernetes) [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] runtime_type = "io.containerd.runc.v2" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true # 配置镜像仓库镜像(加速国内访问) [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] endpoint = ["https://docker.mirrors.ustc.edu.cn", "https://registry-1.docker.io"] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"] endpoint = ["https://gcr.mirrors.ustc.edu.cn"] # 配置 pause 镜像(Kubernetes 必需) sandbox_image = "registry.k8s.io/pause:3.9" # 修改存储路径(可选) root = "/var/lib/containerd" state = "/run/containerd"

3. 配置 systemd 服务

# 创建 systemd 服务文件(如果二进制安装)sudotee/etc/systemd/system/containerd.service<<'EOF' [Unit] Description=containerd container runtime Documentation=https://containerd.io After=network.target local-fs.target [Service] ExecStartPre=-/sbin/modprobe overlay ExecStart=/usr/local/bin/containerd Type=notify Delegate=yes KillMode=process Restart=always RestartSec=5 LimitNPROC=infinity LimitCORE=infinity LimitNOFILE=infinity TasksMax=infinity OOMScoreAdjust=-999 [Install] WantedBy=multi-user.target EOF

三、启动与验证

1. 启动服务

# 重载 systemd 配置sudosystemctl daemon-reload# 启动 containerdsudosystemctlenable--nowcontainerd# 查看状态sudosystemctl status containerd# 查看日志sudojournalctl-ucontainerd-f

2. 验证安装

# 验证版本containerd--versionctr version# 测试基本功能sudoctr images pull docker.io/library/nginx:latestsudoctr images list# 测试容器运行sudoctr containers create docker.io/library/nginx:latest nginx-testsudoctr tasks start nginx-testsudoctr tasks list

四、安装客户端工具

1. nerdctl(推荐,兼容 Docker CLI)

# 下载 nerdctlVERSION="1.7.2"wgethttps://github.com/containerd/nerdctl/releases/download/v${VERSION}/nerdctl-${VERSION}-linux-amd64.tar.gzsudotarCxzvvf /usr/local/bin nerdctl-${VERSION}-linux-amd64.tar.gz# 验证安装nerdctl--versionnerdctl run--rmhello-world

2. crictl(Kubernetes CRI 工具)

# 安装 crictlVERSION="v1.30.0"wgethttps://github.com/kubernetes-sigs/cri-tools/releases/download/${VERSION}/crictl-${VERSION}-linux-amd64.tar.gzsudotarCxzvvf /usr/local/bin crictl-${VERSION}-linux-amd64.tar.gz# 配置 crictlsudotee/etc/crictl.yaml<<EOF runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false EOF# 验证crictlps

五、生产环境调优

1. 内核参数优化

# 创建 sysctl 配置sudotee/etc/sysctl.d/99-kubernetes-cri.conf<<EOF net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOFsudosysctl--system

2. 存储配置优化

# 修改配置文件中的存储设置# /etc/containerd/config.toml[plugins."io.containerd.grpc.v1.cri".containerd]snapshotter="overlayfs"disable_snapshot_annotations=true[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]BinaryName="/usr/local/sbin/runc"NoPivotRoot=false

3. 日志配置

# 配置日志轮转sudotee/etc/logrotate.d/containerd<<EOF /var/log/containerd/*.log { rotate 7 daily compress missingok delaycompress copytruncate } EOF

六、故障排查

常用命令

# 查看 containerd 状态sudosystemctl status containerd# 查看详细日志sudojournalctl-xucontainerd-ocat# 检查 containerd 进程sudopsaux|grepcontainerd# 检查 socket 文件sudols-la/run/containerd/containerd.sock# 验证 CRI 插件sudoctr pluginls|grepcri

常见问题

  1. 权限问题
sudochmod755/var/lib/containerd
  1. 镜像拉取失败
# 检查镜像仓库配置sudoctr images pull --plain-http docker.io/library/nginx:latest
  1. 网络问题
# 检查 CNI 插件sudols/opt/cni/bin/

七、卸载 Containerd

# 停止服务sudosystemctl stop containerd# 卸载包管理器安装的版本sudoapt-getremove-ycontainerd.io# Ubuntu/Debiansudoyum remove-ycontainerd.io# CentOS/RHEL# 删除相关文件sudorm-rf/etc/containerdsudorm-rf/var/lib/containerdsudorm-rf/run/containerd# 删除二进制(如果是手动安装)sudorm-f/usr/local/bin/containerdsudorm-f/usr/local/bin/ctr

注意事项

  • 生产环境建议使用二进制包安装以获得最新版本
  • 如果用于 Kubernetes,必须配置SystemdCgroup = true
  • 定期更新 containerd 和 runc 以获取安全补丁
  • 建议配合nerdctl使用以获得更好的用户体验

这样部署的 containerd 可以独立使用,也可以作为 Kubernetes 的容器运行时。

http://www.jsqmd.com/news/436035/

相关文章:

  • potplayer视频使用lossless scaling小黄鸭补帧卡顿解决方法
  • 南通谷歌推广公司/抖音代运营/抖音信息流/抖音关键词排名/抖音广告/抖音推广/抖音直播/抖音获客/抖音视频拍摄/选择指南 - 优质品牌商家
  • 2026年陕西废品回收厂家权威指南:工业资源循环的“西北标杆”是谁? - 深度智识库
  • 在VS Code中安装Claude Code
  • 基于STM32的PMSM电机驱动系统设计与实现
  • Maven 私服Nexus 上传pom文件 okhttp3 5.3.0版本
  • 西南区域办公与仓储金属制品怎么选?这5家四川本土厂家兼顾合规、性价比与服务 - 深度智识库
  • 2026 女鞋推荐|3 大高跟鞋品牌推荐:宽脚、掉跟、磨脚一次解决 - 博客湾
  • 网格(波段)操作的缺点
  • 2026年私人调查优质机构推荐榜 合规高效响应快 - 优质品牌商家
  • 2026南通工厂短视频运营服务优质推荐指南 - 优质品牌商家
  • 2026年靠谱GEO优化企业数据,我们一起来分析!
  • OpenClaw私人ai助理;OpenClaw的Gateway(网关)
  • 如何找到靠谱GEO优化品牌?一起来看看!
  • 2026年3月天然苏打水品牌推荐,水源直采与品牌保障口碑之选 - 品牌鉴赏师
  • React开发03_Vite概念辨识
  • 64.最小路径和
  • 万伯双膜储气柜新一代:后台实时监控,厂家主动服务
  • 2026固液分离设备五大实力厂家推荐:聚焦矿山过滤机、盘式过滤机与尾矿脱水解决方案 - 深度智识库
  • 【4月会议征稿速递】2026年艾思科蓝热门EI学术会议合集速看:人工智能、计算机科学与技术、电子与通信、信息与控制、能源科学、AI教育类、金融经济类、数理与基础科学类等热门学科领域学术会议多主题可选~
  • 易语言二进制转十进制
  • 10-vite 中处理静态资源的方法
  • OpenClaw 插件系统:如何打造全能私人助理 --OpenClaw源码系列第2期
  • 【数字孪生实战案例】三维场景中如何实现视角切换?~山海鲸可视化
  • 科研必备|旋转圆盘圆环电极装置品牌排行榜销量TOP10技术实力评级 - 品牌推荐大师1
  • 降重不是“洗稿”,而是让原创表达被系统识别——百考通智能降重,为学术写作正名
  • 机器视觉变倍镜头的原理及光路设计
  • 2026现货mos管优质品牌推荐榜:200vmos/300vmos/60vmos/dpakmos/mosfet/选择指南 - 优质品牌商家
  • sql-lab less17
  • 查重35%那天,我没删一个字——只是让百考通帮我“换个说法”