Docker Containerd初体验

embedded/2024/9/23 21:15:15/

Docker Containerd概述

​ Containerd是一个开源的容器运行时,它提供了一种标准化的方式来管理容器的生命周期。该项目最初是由Docker开发团队创建的,并在后来成为了一个独立的项目,被纳入了Cloud Native Computing Foundation(CNCF)的孵化项目中。

Containerd的特点和功能

  • 容器生命周期管理
    • Containerd管理容器的生命周期,包括容器的创建、运行、暂停、恢复、停止和销毁等操作
  • 标准化接口
    • Containerd提供了一个标准化的容器运行时接口,使得它可以与多个容器编排系统和工具集成,例如kubernetes、Docker Compose
  • 镜像管理
    • 它支持容器镜像的拉取、推送、保存和加载等操作、Containerd使用OCI(Open Cintainer Initiative)规范定义容器镜像的格式
  • 插件体系结构
    • Containerd具有可扩展插件体系接、运行用户通过插件来扩展其功能,例如存储去掉、网络插件等。
  • 跨平台支持
    • Containerd可以在不同的操作系统上运行,从而提供了跨平台的支持。
  • 与kubernetes集成
    • Contained作为Kubernetes的默认容器运行时,与kubernetes紧密集成,为容器工作负载的管理提供了良好的支持
  • 安全性
    • Contained实现了严格的容器隔离和安全性措施,确保容器之间的隔离性以及对主机系统的安全性。

Containerd的起源与背景

  • Containerd 的起源可以追溯到Docker 项目。Docker 最初作为一个开源项目推出,旨在简化应用程序的打包、分发和部署过程。Docker引入了容器的概念,将应用程序和其依赖项打包到一个容器中,使得应用在不同环境中可以一致地运行。
  • 随着Docker的发展,其架构逐渐变得复杂,包含了许多功能,如镜像构建、服务编排等。为了更好 地组织和管理这些功能,Docker团队决定将Docker 引擎拆分成多个组件,其中一个关键的组件就是 Containerd。

Containerd架构概述

  • Containerd的架构是moduiarity(模块化)和可扩展的体现,它被设计为一个轻量级、高度可定制的容器运行时s

  • 为了解耦Containerd将系统划分为了不同的组件,每个组件都由一个或多个模块写作完成(Core部分),每一种类型的模块都以插件的形式集成到Containerd中

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

    在这里插入图片描述

Docker Containerd安装与使用

安装Containerd
#使用ali镜像仓库
[root@bogon ~]# rm -rf /etc/yum.repos.d/*
[root@bogon ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@bogon ~]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
# step 1: 安装必要的一些系统工具
[root@bogon ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
[root@bogon ~]# sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
[root@bogon ~]# sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
[root@bogon ~]# yum clean all
#安装Containerd
[root@bogon ~]# yum -y install containerd.io
配置Containerd
#生成配置文件
[root@bogon ~]# mkdir -p /etc/containerd #没有该目录创建
#更改默认配置文件
[root@bogon ~]# containerd config default>/etc/containerd/config.toml
#配置镜像加速
[root@bogon ~]# vim /etc/containerd/config.toml
#找到[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"]#启动服务
[root@bogon ~]# systemctl enable containerd
[root@bogon ~]# systemctl start containerd

Containerd基本操作

镜像类操作
#拉取镜像
[root@bogon ~]# ctr images pull hub.atomgit.com/amd64/nginx:1.25.2-perl
#查看镜像
[root@bogon ~]# ctr images ls
REF                                     TYPE                                                 DIGEST                                                                  SIZE     PLATFORMS   LABELS 
hub.atomgit.com/amd64/nginx:1.25.2-perl application/vnd.docker.distribution.manifest.v2+json sha256:615eb6b7237368628ba586460fdab74bccbd4610533f59717ef2cc7c25458efc 78.5 MiB linux/amd64 -      
#检测本地镜像
[root@bogon ~]# ctr images check
#重命名
[root@bogon ~]# ctr images tag hub.atomgit.com/amd64/nginx:1.25.2-perl nginx:v1
[root@bogon ~]# ctr images tag hub.atomgit.com/amd64/nginx:1.25.2-perl nginx:v2
#删除镜像
[root@bogon ~]# ctr images tag rm nginx:v2
#镜像挂载到主目录
[root@bogon ~]# ctr images mount nginx:v1 /mnt
[root@bogon ~]# df
ctr images mount nginx:v1 /mnt
#取消镜像挂载
[root@bogon ~]# ctr images unmount /mnt 
#镜像导出 格式:ctr images export --all-platforms 文件名 镜像名称:[镜像标签]
[root@bogon ~]# ctr images export --all-platforms nginx_v1.tar nginx:v1
#镜像导入 格式:ctr images import 文件名
[root@bogon ~]# ctr imgaes import nginx_v1.tar 
容器类操作
#创建容器
[root@bogon ~]# ctr containers create nginx:v1 nginx
#列出容器
[root@bogon ~]# ctr containers ls
#查看容器详细信息
[root@bogon ~]# ctr containers info nginx
#删除容器
[root@bogon ~]# ctr containers rm nginx
[root@bogon ~]# ctr containers ls
任务类操作
#启动容器  容器需先存在
[root@bogon ~]# ctr containers create nginx:v1 nginx
[root@bogon ~]# ctr task start -d nginx 
-d 放入后台运行
#查看容器
[root@bogon ~]# ctr task ls
#进入容器
[root@bogon ~]# ctr task exec --exec-id 0 -t nginx sh 
--exec-id id随意数字但不要重复
#暂停容器
[root@bogon ~]# ctr task pause nginx
[root@bogon ~]# ctr task ls
#恢复容器
[root@bogon ~]# ctr task resume nginx
[root@bogon ~]# ctr task ls
#杀死容器
[root@bogon ~]# ctr task kill nginx
[root@bogon ~]# ctr task ls
#删除任务
[root@bogon ~]# ctr task rm nginx 
#但创建容器时,也有同名快照,即便已经删除,可以使用ctr task start -d nginx命令,利用已删除的任务启动起来,使此容器恢复运行
#删除容器
[root@bogon ~]# ctr task kill nginx
[root@bogon ~]# ctr container rm nginx
#获取容器的内存、CPU和PID的限额与使用量
[root@bogon ~]# ctr containers create nginx:v1 nginx
[root@bogon ~]# ctr task start -d nginx 
[root@bogon ~]# ctr task metrics nginx
#查看容器中所有进程在宿主机中的PID
[root@bogon ~]# ctr task ps nginx
其他操作
#列出当前所有插件
[root@bogon ~]# ctr plugins ls
#查看命名空间
[root@bogon ~]# ctr ns create test
[root@bogon ~]# ctr ns ls
#创建命名空间
[root@bogon ~]# ctr ns create test
[root@bogon ~]# ctr ns create test01
[root@bogon ~]# ctr ns ls
#删除命名空间
[root@bogon ~]# ctr ns rm test01
#使用命名空间 使用-n 指定命名空间
[root@bogon ~]# ctr -n test
test
[root@bogon ~]# ctr ns create test01
[root@bogon ~]# ctr ns ls
#删除命名空间
[root@bogon ~]# ctr ns rm test01
#使用命名空间 使用-n 指定命名空间
[root@bogon ~]# ctr -n test

http://www.ppmy.cn/embedded/96040.html

相关文章

前端开发攻略---彻底弄懂跨域解决方案

目录 1、浏览器的同源策略 1.1 源 1.2 同源与非同源 1.3 同源请求与非同源请求 2、跨域受到的限制 3、注意点 4、CORS解决Ajax跨域问题 4.1 CORS概述 4.2 CORS解决简单请求跨域 4.3 简单请求与复杂请求 4.4 CORS解决复杂请求跨域 4.5 借助CORS库快速完成配置 5、JS…

10692 XYM-入门之道

### 分析 1. 读取测试用例的数量 \( T \)。 2. 对于每个测试用例,读取西瓜的大小 \( n \) 和 BM 一次能吃下的最大西瓜大小 \( k \)。 3. 实现一个函数来计算 BM 吃完西瓜所需的次数: - 如果 \( n \leq k \),BM 可以一次吃完西瓜。 - 否…

CTF — MP3文件隐写

CTF — MP3文件隐写 MP3音频隐写除了利用波形图和频谱图,还可以用专门隐写工具或者利用其头部冗余字段实现隐写。MP3Stego是最早出现的一款基于MP3的隐写软件,它在MP3编码过程的内循环实现秘密信息的嵌入,通过编码参数块长度的奇偶性来实现秘…

squeeze()和unsequeeze()函数的作用

sequeeze(dim):用于在指定位置添加一个大小为1的新维度 例如: 其他的大家自行尝试! squeeze():squeeze函数用于去除张量中所有大小为1的维度,注意当没有传入任何参数的时候,去掉的是所有大小为1的维度。 例如:

python绘制蕨菜叶分形

一花一叶一世界,一草一木一浮生. 使用了四个不同的线性变换,根据概率选择其中一个变换并更新 x 和 y 坐标。然后将生成的绿色点绘制出来,形成一片蕨菜叶。 import numpy as np import matplotlib.pyplot as pltdef fern_fractal(num_points):# 初始化坐…

绕过Cloudflare的两种简便方案

文章目录 什么是Cloudflare风控1. Web 应用防火墙 (WAF)2. DDoS 防护3. Bot 管理4. IP 声誉评分5. 安全等级设置6. API 安全7. 访问控制8. 流量分析与报告总结Cloudflare风控特征如何绕过1. 基础版Cloudflare绕过2. 质询版Cloudflare绕过什么是Cloudflare风控 Cloudflare 的风…

可视化编程-七巧低代码入门02

1.1.什么是可视化编程 非可视化编程是一种直接在集成开发环境中(IDE)编写代码的编程方式,这种编程方式要求开发人员具备深入的编程知识,开发效率相对较低,代码维护难度较大,容易出现错误,也需要…

原创音乐小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,歌曲类型管理,歌曲信息管理,热门歌手管理,音乐资讯管理,系统管理 微信端账号功能包括:系统首页,歌曲信息&a…