首页 > 其他分享 >Containerd基础用法

Containerd基础用法

时间:2023-04-12 16:35:10浏览次数:41  
标签:容器 ctr busybox Containerd 基础 用法 containerd Docker

1)关于Containerd的基础知识

从 Docker 1.11 版本开始,Docker 容器运行就不是简单通过 Docker Daemon 来启动了,而是通过集成containerd、runc等多个组件来完成的。虽然Docker Daemon守护进程模块在不停地重构,但是基本功能和定位没有太大的变化,一直都是CS架构,守护进程负责和Docker Client端交互,并管理Docker镜像和容器。现在的架构中组件containerd就会负责集群节点上容器的生命周期管理,并向上为Docker Daemon提供gRPC接口。

图片

Containerd-shim是Containerd的一个插件,它用来扮演进程管理器的角色,接收来自containerd的命令,并在容器内部创建和管理进程。它可以与Runc协同工作,使得容器的创建、启动、停止、暂停和恢复等操作都能够得到有效的处理。一句话,创建容器这件事是由Containerd-shim来完成的。我们都知道,创建容器是需要做一些namespaces和cgroups的配置,以及挂载root文件系统的操作。这些操作其实已经有了标准的规范,那就是OCI(开放容器标准)。OCI本质上就是一个规范文档,主要规定了容器镜像的结构标准以及容器接收操作指令的标准,比如create、start、stop、delete 等这些命令。而Runc其实就是按照这个OCI的各种规范来实现管理容器的。所以真正启动容器是通过containerd-shim去调用runc来启动容器的,runc 启动完容器后本身会直接退出,containerd-shim 则会成为容器进程的父进程, 负责收集容器进程的状态, 上报给 containerd, 并在容器中 pid 为 1 的进程退出后接管容器中的子进程进行清理, 确保不会出现僵尸进程。Containerd 是一个工业级标准的容器运行时,它强调简单性、健壮性和可移植性,containerd 可以负责干下面这些事情:
  • 管理容器的生命周期(从创建容器到销毁容器)
  • 拉取/推送容器镜像
  • 存储管理(管理镜像及容器数据的存储)
  • 调用 runc 运行容器(与 runc 等容器运行时交互)
  • 管理容器网络接口及网络

 

2)containerd安装

下面步骤为在Rocky8/RHEL8上安装containerd

先安装yum-utils工具

yum install -y yum-utils

配置Docker官方的yum仓库,如果做过,可以跳过

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

安装containerd

yum install containerd.io -y

启动服务并设置为开机自启

systemctl enable containerdsystemctl start containerd

 

3)containerd命令行工具ctr

Ctr就是containerd的命令行工具,可以用来执行和管理containerd中的任务。ctr主要用于开发和调试,而不是在生产环境中使用。常见用法如下:

查看containerd版本

ctr version

拉取镜像

ctr images pull  docker.io/library/busybox:latest #其中images可以简写为i

列出本地镜像

ctr  images list #或者简写ctr i ls

修改tag

ctr i tag  docker.io/library/busybox:latest  busybox:latest

删除镜像

ctr i rm docker.io/library/busybox:latest

运行容器

ctr run  -d  busybox:latest busybox

列出运行的容器

ctr containers  list  #或者简写为ctr c  ls

列出任务

ctr tasks  ls #或者简写ctr t  ls

容器里执行命令

ctr t exec --exec-id 1860 busybox ls  #1860为任务ID

进入容器内部

ctr t exec -t --exec-id 1860 busybox sh

删除容器

ctr t kill -s SIGKILL busybox #先杀掉进程ctr c  rm  busybox #再删除容器

总之,这个ctr工具跟docker的命令行工具用起来还是有不少差异的。

标签:容器,ctr,busybox,Containerd,基础,用法,containerd,Docker
From: https://www.cnblogs.com/msjhw/p/17310247.html

相关文章

  • flask的基础使用
    基于django,flask的自动化运维项目flask入门级教程https://tutorial.helloflask.com/preface/在Linux系统中部署flask并使用准备工作:python3.6版本以上,pycharm或vscode,chrome浏览器,github账号$cdwatchlist$python3--version #查看python3版本Python3.9.10$git-......
  • LCD01-基础概念
           1.亚像素控制灰阶显示不同颜色2.利用视觉暂留效应通过控制像素显示时间来显示不同颜色ViewCode  Ø为液晶偏转角度45度  sin(90)通过的光线最强  0度为不透光   lcd取向薄膜的作用LCD(液晶显示器)取向薄膜是制造LCD的关键组件之......
  • C#中HttpWebRequest的用法详解
    1、HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择。2、命名空间:System.Net3、HttpWebRequest对象不是利用new关键字创建的(通过构造函数)。 而是利用Create()方法创建的。4、你可能预计需要显示地调用一个“Send”方法,实际上不需要。5、调用HttpWebRe......
  • 计算机基础知识试题及答案(怀旧用)
    第一部分一、单项选择题1.世界上第一台电子数字计算机取名为()。A.UNIVACB.EDSACC.ENIACD.EDVAC2.操作系统的作用是()。A.把源程序翻译成目标程序B.进行数据处理C.控制和管理系统资源的使用D.实现软硬件的转换3.个人计算机简称为PC机,这......
  • C语言数组基础知识(关于索引)
    #include<stdio.h>intmain(){inti;//遍历输出分别值inta[]={1,2,3,4,5};for(i=0;i<5;i++){printf("%d\t",a[i]);//12345};printf("\n");//若给的值不够就用0补齐......
  • 新员工入职,前端基础环境变量的配置!node、nvm、vue-cli的安装和下载
    1.安装nvm及配置首先下载nvm不要下载node,如果电脑已经有node的话需要卸载node,并使用命令提示符来查看node的位置(wherenode)手动删除nvm下载链接:https://nvm.uihtm.com/下载最新版本,next傻瓜式操作(需要注意的是)选择node.js文件位置,如果需要更改,请在这里进行更改......
  • 【基础知识】PCB布局设计入门步骤
    准备是成功的基石,在PCB设计中也是如此。改进和增长将伴随经验,首先做好准备能够充分利用经验获得成功。为了帮助你做好准备,下面分享一些基本的PCB布局设计步骤。从良好的原材料入手是您PCB布局设计的第一步无论打算执行什么任务,要想成功,就需要从优质的材料入手。就像高级木匠不会用......
  • Java中ThreadLocal的用法和原理
    用法隔离各个线程间的数据避免线程内每个方法都进行传参,线程内的所有方法都可以直接获取到ThreadLocal中管理的对象。packagecom.example.test1.service;importorg.springframework.scheduling.annotation.Async;importorg.springframework.stereotype.Component;imp......
  • C#属性(Attribute)用法实例解析
    属性(Attribute)是C#程序设计中非常重要的一个技术,应用范围广泛,用法灵活多变。本文就以实例形式分析了C#中属性的应用。具体如下:一、运用范围程序集,模块,类型(类,结构,枚举,接口,委托),字段,方法(含构造),方法,参数,方法返回值,属性(property),Attribute[AttributeUsage(AttributeTargets.All)]......
  • git用法
    3.1.2基本配置1.右键打开GitBash2.设置用户信息gitconfig--globaluser.name"itcast"gitconfig--globaluser.email"hellpoitcast.cn"查看配查信息gitconfig--globaluser.namegitconfig--globaluser.email ......