Containerd 简介、安装与使用指南

1. Containerd 简介

Containerd 是一个开源的容器运行时,专注于管理容器的生命周期。它最初是 Docker 的一部分,后来被分离出来成为一个独立的项目,并成为 Kubernetes 和其他容器平台的底层运行时。Containerd 提供了容器的创建、启动、停止、删除等核心功能,同时支持镜像的拉取和管理。

Containerd 的设计目标是轻量、高效且易于集成,它通过标准的 CRI(Container Runtime Interface)与 Kubernetes 等编排工具无缝对接。相比于 Docker,Containerd 更加专注于核心功能,适合需要更高定制化的场景。


2. Containerd 安装教程

2.1 环境准备

  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7/8)

  • 内核版本:4.x 或更高

  • 用户权限:root 或具有 sudo 权限的用户

2.2 安装 Containerd

2.2.1 使用包管理器安装(推荐)

Ubuntu/Debian:

  1. 更新软件包列表:

    sudo apt-get update

  2. 安装依赖:

    sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

  3. 添加 Docker 官方 GPG 密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  4. 添加 Docker 仓库:

    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

  5. 安装 Containerd:

    sudo apt-get update

    sudo apt-get install -y containerd.io

CentOS/RHEL:

  1. 安装依赖:

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2

  2. 添加 Docker 仓库:

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

  3. 安装 Containerd:

    sudo yum install -y containerd.io

2.2.2 手动安装(适用于高级用户)
  1. 下载 Containerd 二进制文件:

    wget https://github.com/containerd/containerd/releases/download/v1.6.0/containerd-1.6.0-linux-amd64.tar.gz

  2. 解压文件:

    tar -C /usr/local -xzf containerd-1.6.0-linux-amd64.tar.gz

  3. 创建 systemd 服务文件:

    sudo vi /etc/systemd/system/containerd.service

    内容如下:

    [Unit]
    Description=containerd container runtime
    Documentation=https://containerd.io
    After=network.target[Service]
    ExecStart=/usr/local/bin/containerd
    Restart=always
    RestartSec=5
    Delegate=yes
    KillMode=process[Install]
    WantedBy=multi-user.target
  4. 启动并启用 Containerd:

    sudo systemctl daemon-reload

    sudo systemctl enable --now containerd


3. Containerd 使用方法

3.1 配置 Containerd

Containerd 的配置文件通常位于 /etc/containerd/config.toml。您可以根据需要修改配置文件,例如调整日志级别、存储路径等。

生成默认配置文件:

sudo mkdir -p /etc/containerd

containerd config default | sudo tee /etc/containerd/config.toml

重启 Containerd 以应用配置:

sudo systemctl restart containerd

3.2 使用 Containerd 管理容器

3.2.1 拉取镜像

使用 ctr 命令拉取镜像:

sudo ctr images pull docker.io/library/nginx:latest

3.2.2 运行容器

运行一个容器:

sudo ctr run -d --rm docker.io/library/nginx:latest nginx-container

3.2.3 查看容器

列出所有容器:

sudo ctr containers list

3.2.4 停止容器

停止容器:

sudo ctr tasks kill nginx-container

3.2.5 删除容器

删除容器:

sudo ctr containers delete nginx-container

3.3 使用 nerdctl 增强 Containerd 功能

nerdctl 是一个兼容 Docker CLI 的工具,专为 Containerd 设计,提供了更友好的用户体验。

  1. 安装 nerdctl

    wget https://github.com/containerd/nerdctl/releases/download/v0.20.0/nerdctl-0.20.0-linux-amd64.tar.gz

    tar -C /usr/local/bin -xzf nerdctl-0.20.0-linux-amd64.tar.gz

  2. 使用 nerdctl 管理容器:

    sudo nerdctl run -d --name nginx-container nginx:latest

    sudo nerdctl ps


4. 总结

Containerd 是一个强大且轻量级的容器运行时,适合需要高性能和定制化的场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/70202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源语音克隆项目 OpenVoice V2 本地部署

#本机环境 WIN11 I5 GPU 4060ti 16G 内存 32G #开始 git clone https://github.com/myshell-ai/OpenVoice.git conda create -n opvenv python3.9 -y conda activate opvenv pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/…

【Prometheus】prometheus结合domain_exporter实现域名监控

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

rustdesk编译修改名字

最近,我用Rust重写了一个2W行C代码的linux内核模块。在此记录一点经验。我此前没写过内核模块,认识比较疏浅,有错误欢迎指正。 为什么要重写? 这个模块2W行代码量看起来不多,却在线上时常故障,永远改不完。…

在linux系统中安装Anaconda,并使用conda

系统 : ubuntu20.04 显卡:NVIDIA GTX1650 目录 安装Anaconda第一步:下载合适版本的Anconda1. 查看自己Linux的操作系统及架构命令:uname -a2. 下载合适版本的Anconda 第二步:安装Aanconda1. 为.sh文件设置权限2. 执行.sh文件2.1 .…

(前端基础)HTML(一)

前提 W3C:World Wide Web Consortium(万维网联盟) Web技术领域最权威和具有影响力的国际中立性技术标准机构 其中标准包括:机构化标准语言(HTML、XML) 表现标准语言(CSS) 行为标准&#xf…

【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析③】

ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase03 作者:车端域控测试工程师 更新日期:2025年02月15日 关键词:UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023 TC10-003测试用例 用例ID测试场景验证要点参考条款预期…

TDengine 客户端连接工具 taos-Cli

简介工具获取运行命令行参数 基础参数高级参数 数据导出/导入 数据导出数据导入 执行 SQL 脚本使用小技巧 TAB 键自动补全设置字符列显示宽度其它 错误代码表 简介 TDengine 命令行工具(以下简称 TDengine CLI)是用户操作 TDengine 实例并与之交互最简…

Git高级用法

GIT高级用法及实战案例解析 前言 作为现代开发者的必备工具,Git的基础操作(add/commit/push)早已深入人心。但当面对复杂场景时,掌握Git的高级用法将极大提升开发效率。本文将深入解析Git的高级功能,并配合真实场景案…

9个用于测试自动化的最佳AI测试工具(2024)

选择一款优质的基于生成式AI人工智能的测试工具能够确保测试过程的准确性和效率,从而加速整个软件测试周期。相反,设计不佳的测试工具可能无法发现错误,并可能存在安全问题。它们可能产生误报或漏报,误导开发与测试团队&#xff0…

vue-model如何自定义指令,及批量注册自定义指令

一、在Vue.js中,v-model是一个用于在表单输入和应用状态之间创建双向绑定的指令。要编写自定义的v-model指令,你需要使用Vue的自定义指令API。以下是编写自定义v-model指令的步骤: 定义一个自定义指令对象。在指令对象的bind钩子函数中&…

简单认识一下-Redis

一、什么是Redis Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它既可以用作数据库、缓存,也可以作为消息中间件使用。以下为你详细介绍 Redis: 基本特点 高性能:Redis 将数…

LabVIEW的吞雨测控系统

本案例介绍了一种基于LabVIEW开发的吞雨测控系统,该系统通过建模仿真分析不同控制器模式下的阶跃信号响应,从而选择了最适合的控制器。为了有效解决在控制流量过程中出现的振荡收敛和流量信号大扰动问题,系统采用了改进的积分分离PID算法&…

C++中的顺序容器(一)

文章目录 顺序容器概述所有容器类型都支持的操作迭代器容器定义与初始化将一个容器初始化为另一个容器的拷贝标准库array具有固定大小 赋值和swap关系运算符 顺序容器的特有操作向顺序容器添加元素访问元素删除元素特殊的forward_list操作改变容器的大小容器操作可能是迭代器失…

Javaweb中,使用Servlet编写简单的接口

案例:网页提交用户名和密码信息,后端校验密码长度需在6-12位之间 后端部分 WebServlet("/valid") public class SimpleServlet extends HttpServlet{public void service(HttpServletRequest req, HttpServletResponse resp) throws IOExcepti…

C语言实现的常见排序算法

排序是计算机科学中非常重要的基础算法之一。无论是在数据分析、数据库查询还是图形界面中,我们都可能会遇到排序问题。本文将介绍几种常见的排序算法,并提供其C语言实现代码。排序算法的效率和应用场景有很大关系,不同的算法有不同的时间复杂…

对于简单的HTML、CSS、JavaScript前端,我们可以通过几种方式连接后端

1. 使用Fetch API发送HTTP请求(最简单的方式): //home.html // 示例:提交表单数据到后端 const submitForm async (formData) > {try {const response await fetch(http://your-backend-url/api/submit, {method: POST,head…

[论文阅读] SeeSR: Towards Semantics-Aware Real-World Image Super-Resolution

文章目录 一、前言二、主要贡献三、Introduction四、Methodology4.1 Motivation :4.2Framework Overview.** 一、前言 通信作者是香港理工大学 & OPPO研究所的张磊教授,也是图像超分ISR的一个大牛了。 论文如下 SeeSR: Towards Semantics-Aware Rea…

案例-04.部门管理-删除

一.功能演示 二.需求说明 三.接口文档 四.思路 既然是通过id删除对应的部门,那么必然要获取到前端请求的要删除部门的id。id作为请求路径传递过来,那么要从请求路径中获取,id是一个路径参数。因此使用注解PathVariable获取路径参数。 请求方…

Blazor-父子组件传递任意参数

在我们从父组件传参数给子组件时,可以通过子组件定义的[Parameter]特性的公开属性进行传值,但是当我们需要传递多个值的时候,就需要通过[Parameter]特性定义多个属性,有没有更简便的方式? 我们可以使用定义 IDictionar…

DeepSeek 的创新融合:多行业应用实践探索

引言 在数字化转型的浪潮中,技术的融合与创新成为推动各行业发展的关键力量。蓝耘平台作为行业内备受瞩目的创新平台,以其强大的资源整合能力和灵活的架构,为企业提供了高效的服务支持。而 DeepSeek 凭借先进的人工智能技术,在自然…