Docker Containerd初体验

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
shell 复制代码
#使用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
shell 复制代码
#生成配置文件
[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基本操作

镜像类操作
shell 复制代码
#拉取镜像
[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 
容器类操作
shell 复制代码
#创建容器
[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
任务类操作
shell 复制代码
#启动容器  容器需先存在
[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
其他操作
shell 复制代码
#列出当前所有插件
[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
相关推荐
_.Switch2 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410832 小时前
文件系统和日志管理
linux·运维·服务器
JokerSZ.2 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
芯盾时代3 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方4 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘4 小时前
NFS服务器
运维·服务器
南猿北者5 小时前
docker容器
docker·容器
苹果醋35 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰5 小时前
[linux]docker基础
linux·运维·docker
time never ceases6 小时前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle