Container初体验

一、Containerd概述

1.什么是Containerd

        Containerd(Container Daemon)是一个开源的容器运行时,它提供了一种标准化的方式来管理容器的生命周期。该项目最初是由 Docker 开发团队创建的,并在后来成为一个独立的项目,被纳入了 cloudNative Computing Foundation(云原生计算基金会 CNCF)的孵化项目中。
        以下是 containerd 的主要特点和功能:
        容器生命周期管理:Containerd 管理容器的生命周期,包括容器的创建、运行、暂停、恢复、停止和销毁等操作。
        标准化接口: Containerd 提供了一个标准化的容器运行时接口,使得它可以与多个容器编排系统和工具集成,例如 Kubernetes、Docker compose 等。
        镋像管理: 它支持容器镜像的拉取、推送、保存和加载等操作。Containerd 使用 )OCI(openContainer Initiative)规范定义容器镜像的格式。
        插件体系结构: Containerd 具有可扩展的插件体系结构,允许用户通过插件来扩展其功能,例如存储驱动、网络插件等。
        跨平台支持: Containerd 可以在不同的操作系统上运行,从而提供了跨平台的支持。
        与 Kubernetes 集成: Containerd 作为 Kubernetes 的默认容器运行时,与 Kubernetes 紧密集成,为容器工作负载的管理提供了良好的支持。
        安全性和隔离: Containerd 实现了严格的容器隔离和安全性措施,确保容器之间的隔离性以及对主机系统的安全性。
        总体而言,Containerd 提供了一个轻量级、高度可定制的容器运行时,为容器生态系统的发展提供了一个稳定和可靠的基础。它在容器生命周期管理、镜像管理和插件支持等方面为用户提供了丰富的功能。

2.Containerd的起源与背景

        Containerd 的起源可以追溯到 Docker 项目。Docker 最初作为一个开源项目推出,旨在简化应用程序的打包、分发和部署过程。Docker 引入了容器的概念,将应用程序和其依赖项打包到一个容器中,使得应用在不同环境中可以一致地运行。
        随着 Docker 的发展,其架构逐渐变得复杂,包含了许多功能,如镜像构建、服务编排等。为了更好地组织和管理这些功能,Docker团队决定将Docker引擎拆分成多个组件,其中一个关键的组件就是Containerd。
        Docker 架构拆分: Docker 从单一的大型引整拆分为一系列小型、可复用的组件。这种拆分的目标是提高可维护性、模块化和可扩展性。
        Containerd 作为核心运行时:在 Docker 架构拆分后,containerd 被定位为 Docker 的核心容器运行时。它负责管理容器的生命周期、镜像操作和基本运行时功能。
        贡献给CNCF:为了推动containerd 的发展,Docker 团队将 containerd 的代码捐赠给了Cloud Native computing Foundation(CNCF),使其成为 CNCF 的孵化项目。
        容器生态系统的标准化:Containerd 的设计遵循 Open container Initiative(开放容器倡议OCI)规范,这是一个关注容器运行时和镜像格式标准化的开放标准组织。这意味着 containerd 可以与符合0CI 规范的其他容器工具和运行时进行互操作。
        独立的容器运行时: containerd 不仅仅局限于 Docker,它可以作为独立的容器运行时,与多个容器编排系统和工具集成,从而为用户提供更多选择。
        总体而言,containerd 的起源是为了简化容器运行时的管理,并为容器生态系统提供一个开放、标准化的基础。其发展不仅服务于 Docker 生态系统,还为整个容器领域提供了一个通用的、可扩展的容器运行时。

二、Containerd核心组件解析

        Containerd 组件大致分为 Storage、Metadata 和 Runtime 这三个主要方面。

1.storage(存储)

(1)Content(内容)

        功能: Content 存储了容器镜像的实际数据。这包括文件系统层和元数据,用于创建和管理容器的基础文件系统。

(2)Snapshot(快照)

        功能:Snapshot 存储容器的快照数据。每个容器都可以有一个或多个快照,允许它们共享相同的文件
系统层,提高效率。

(3)Diff(差异)

        功能:Diff 存储容器文件系统层之间的差异。当容器运行时需要修改文件系统时,会在已有的文件系统层上创建一个差异层,以保存变更。

2.Metadata(元数据)

(1)Images(镜像)

        功能:Images 存储容器镜像的元数据,包括镜像的标签、大小、创建时间等信息。Metadata 中的 Images组件允许容器对镜像进行管理和操作。

(2)Containers(容器) 

        功能: Containers 存储容器的元数据,包括容器的状态、配置信息、网络设置等。这部分元数据使得容器能够有效地管理容器的生命周期。

3.Runtime(运行时)

(1)Tasks(任务)

        功能: Tasks 包含容器内的进程组。每个容器运行时都有关联的 Task,它负责管理容器内的所有进程。Tasks 与 Shim 一起工作,维护容器的状态。

(2)Events(事件)

        功能: Events 组件记录了容器的各种事件,如容器的创建、启动、停止等。这些事件可以用于监控和日志记录,帮助用户了解容器系统的运行状况。

三、安装配置Containerd

1.准备环境

rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# 安装 containerd
yum -y install containerd.io

2.配置Containerd

生成配置文件
cd /etc/containerd
containerd config default>config.toml
配置镜像加速
# 使用 vi 打开配置文件
vim /etc/containerd/config.toml
# 找到[plugins,"io.containerd.grpc.v1.cri".registry.mirrors]在下面添加
#添加阿里云的镜像源
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.config."docker.io"]
    endpoint = ["https://registry.cn-hangzhou.aliyuncs.com" ,"https://registry-1.docker.io"]

3.启动服务

systemctl enable containerd
systemctl start containerd
ctr version

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值