containerd镜像容器管理

news/2024/4/28 12:03:05/文章来源:https://blog.csdn.net/wuxingge/article/details/136969843

镜像基本操作

拉取镜像

与docker不同,拉取镜像时要加上 docker.io/liarary

ctr images pull docker.io/library/nginx:alpine

指定平台
–all-platforms:所有平台(amd64 、arm、386 、ppc64le 等),不加的话下载当前平台架构
–platform:指定linux/amd64平台

ctr images pull --all-platforms docker.io/library/nginx:alpine
ctr images pull --platform linux/amd64 docker.io/library/nginx:alpine

查看镜像

查看镜像可以使用 i 简写或者image
-q 只打印镜像名称

ctr image ls
ctr image ls -q

检测镜像
主要查看其中的 STATUS,complete 表示镜像是完整可用的状态

ctr image check

镜像挂载

把已下载的容器镜像挂载至当前文件系统,查看镜像中包含的内容

ctr image mount docker.io/library/nginx:alpine /root/tmp

卸载镜像

ctr image unmount /root/tmp/

镜像导出删除导入

导出

同时导出可以使用–platform导出其它平台的(例如arm)
–all-platforms为导出所有平台

ctr image export  mynginx.tar docker.io/library/nginx:alpine
ctr image export --all-platforms mynginx.tar docker.io/library/nginx:alpine

删除镜像

ctr images rm docker.io/library/nginx:alpine

导入

#删除本地镜像
ctr image rm docker.io/library/nginx:alpine
#导入镜像
ctr images import mynginx.tar
ctr images import --all-platforms mynginx.tar

导入可能会出现类似于 ctr: content digest sha256:xxxxxx not found 的错误,要解决这个办法需要 pull 所有平台镜像

ctr image pull --all-platforms docker.io/library/nginx:alpine
ctr image export --all-platforms mynginx.tar docker.io/library/nginx:alpine
ctr image rm docker.io/library/nginx:alpine
ctr image import mynginx.tar

镜像打标签

ctr images tag docker.io/library/nginx:alpine docker.io/bongmu/nginx:alpine

推送镜像

这个有问题

ctr images push  docker.io/bongmu/nginx:alpine
#推送镜像到带认证的镜像仓库
ctr images push --user bongmu:xx docker.io/bongmu/nginx:alpine

命名空间操作

containerd相比于docker,多了namespace概念,每个image和containe都会在各自的namespace下可见

查看命名空间

ctr namespaces ls

创建命名空间

ctr namespaces create test

删除命名空间

ctr namespaces rm test

默认containerd会使用default命名空间,Kubernetes 下使用的 containerd 默认命名空间是 k8s.io,Docker 使用的 containerd 下面的命名空间默认是 moby。下载镜像的时候命名空间只如果不指定,默认是看不到,这点和k8s namespace作用相同。有了命名空间后就可以在操作资源的时候指定 namespace

ctr -n test images pull --all-platforms docker.io/library/nginx:alpine

查看命名空间镜像

ctr -n test images ls

创建静态容器

ctr container create docker.io/library/nginx:alpine nginx

nginx 指定容器名称 使用 ctr container create 命令创建容器后,容器并没有处于运行状态,其只是一个静态的容器。这个 container 对象只是包含了运行一个容器所需的资源及配置的数据结构,例如:namespaces、rootfs 和容器的配置都已经初始化成功了,只是用户进程(本案例为nginx)还没有启动。需要使用ctr tasks命令才能获取一个动态容器。

查看容器

ctr container ls -q
#查看容器详细配置,类似于 docker inspect 功能
ctr container info nginx

删除容器

ctr container rm nginx

容器任务

container create 命令创建的容器,并没有处于运行状态,只是一个静态的容器。一个 container 对象只是包含了运行一个容器所需的资源及相关配置数据,表示 namespaces、rootfs 和容器的配置都已经初始化成功了,只是用户进程还没有启动。一个容器真正运行起来是由 Task 任务实现的,Task 可以为容器设置网卡,还可以配置工具来对容器进行监控等。操作容器实际上是对容器进程操作

静态容器启动为动态容器

将静态容器启动为动态容器 ,使用 ctr task 命令 Task 相关操作可以通过 ctr task 获取,如下我们通过 Task 来启动容器

ctr task start -d nginx
#-d是一个命令行选项,它的全称是--detach。这个选项告诉ctr task start命令在启动任务后立即返回,让任务在后台运行

查看容器进程

ctr task ls
ctr task ps nginx

exec终端操作

ctr task exec --exec-id 0 -t nginx sh
#注意 --exec-id参数 为 exec 进程设定一个id,可以随意输入,只要保证唯一即可,也可使用$RANDOM变量

运行一个动态容器

ctr run -d --net-host docker.io/library/nginx:alpine nginx2
ctr c ls
ctr task ls
#-d 代表dameon,后台运行
#--net-host 代表容器的IP就是宿主机的IP(相当于docker里的host类型网络)

进入容器

ctr task exec --exec-id 1 -t nginx2 /bin/sh

暂停容器进程

ctr task pause nginx

恢复容器进程

ctr task resume nginx

杀死容器进程

ctr 没有 stop 容器的功能,只能暂停或者杀死容器进程,然后在删除容器杀死容器进程可以使用 task kill 命令

ctr task kill nginx

删除进程

杀掉容器后可以看到容器的状态变成了 STOPPED。同样也可以通过 task rm 命令删除 Task

ctr task rm nginx

删除进程之后才可以删除容器

ctr container rm nginx

查看容器进程资源

使用 task metrics 命令用来获取容器的内存、CPU 和 PID 的限额与使用量

ctr task metrics nginx

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

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

相关文章

如何实现无公网IP及服务器实现公网环境企业微信网页应用开发调试

文章目录 1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 企业微信开发者在应用的开发测试阶段,应用服务通常是部署在开发环境,在有数据回调的开发场…

蓝桥杯真题Day40 倒计时19天 纯练题!

蓝桥杯第十三届省赛真题-统计子矩阵 题目描述 给定一个 N M 的矩阵 A,请你统计有多少个子矩阵 (最小 1 1,最大 N M) 满足子矩阵中所有数的和不超过给定的整数 K? 输入格式 第一行包含三个整数 N, M 和 K. 之后 N 行每行包含 M 个整数&#xf…

java日志技术——Logback日志框架安装及概述

前言: 整理下学习笔记,打好基础,daydayup!!! 日志 什么是日志 程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息,通过日志可以进行操作分析,bug定位等 记录日志的方案 程…

【爬虫基础】第6讲 opener的使用

在爬虫中,opener是一个用来发送HTTP请求的对象。它可以用来模拟浏览器发送请求,包括设置请求头、处理Cookie等操作。使用opener可以实现一些高级功能,如模拟登录、处理验证码等。 方法1: from urllib.request import Request,bu…

【数据结构】顺序表的实现——静态分配

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:数据结构 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

Linux manim安装

简介 根据文档可知, manim目前分为两个版本, 一个是由3Blue1Brown维护更新的最新版本的manimgl, 另一个是稳定的社区版本manim or manimce. 两个版本在安装和使用上都有些不同, 不要搞混. Linux manim ERROR No package ‘pangocairo’ found Getting requirements to buil…

使用 .NET 和 Teams Toolkit 构建 AI 机器人、扩展 Copilot for Microsoft 365 以及更多

作者:Ayca Bas 排版:Alan Wang Teams Toolkit for Visual Studio 帮助 .NET 开发人员为 Microsoft Teams 构建、调试和发布应用程序。我们很高兴向大家宣布,Teams Toolkit for Visual Studio 2022 17.9 版本为 .NET 开发人员提供了许多令人兴…

【Qt】使用Qt实现Web服务器(六):QtWebApp用户名密码登录

1、示例 1)演示 2)登录 3)显示 2、源码 示例源码Demo1->LoginController void LoginController::service(HttpRequest& request, HttpResponse& response) {

Wagtail-基于Python Django的内容管理系统CMS实现公网访问

目录 前言 1. 安装并运行Wagtail 1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具 3. 实现Wagtail公网访问 4. 固定Wagtail公网地址 前言 Wagtail是一个用Python编写的开源CMS,建立在Django Web框架上。Wagtail 是一个基于 Django 的开源内容管理系统&…

鸿蒙开发实战-如何开发一个字符串加解密应用程序

介绍 本Codelab针对用户隐私安全,使用加密算法API对密码进行加密存储,模拟开发一个用户注册登录应用。实现如下功能: 实现登录、注册、登录成功页面。注册的用户数据保存到关系型数据库。登录时通过查询数据库校验用户是否存在、密码是否正…

如何高效系统地自学 Python?

导言: Python作为一门流行的编程语言,被广泛运用于数据分析、人工智能、网络应用等领域。想要系统地自学Python,并掌握其核心概念和编程技能,需要一定的方法和步骤。本文将介绍如何高效系统地自学Python,让你能够快速…

docker推拉时的数据交换详解

前言 docker用了这么久了, 有没有想过, 在执行docker push 和 docker pull命令的时候, 数据是如何传递的呢? 换句话说, 如果要实现一个镜像仓库, 针对推拉的服务, 如何实现接口呢? 根据OCI 分发规范文档 的描述, 已经对整个推拉过程中要调用的接口有描述了. 但是, 纸上学来…

Linux升级GCC

文章目录 一、安装 EPEL 仓库二、更新yum三、安装 CentOS 开发工具组四、安装scl五、安装gcc 11六、启用gcc 11七、设置永久使用 一、安装 EPEL 仓库 命令: yum install epel-release -y二、更新yum 命令: yum update -y三、安装 CentOS 开发工具组 …

蓝桥杯练习题总结(三)线性dp题(摆花、数字三角形加强版)

目录 一、摆花 思路一: 确定状态: 初始化: 思路二: 确定状态: 初始化: 循环遍历: 状态转移方程: 二、数字三角形加强版 一、摆花 题目描述 小明的花店新开张,为了吸…

python知识点总结(十)

python知识点总结十 1、装饰器的理解、并实现一个计时器记录执行性能,并且将执行结果写入日志文件中2、队列和栈的区别,并且用python实现3、设计实现遍历目录与子目录4、CPU处理进程最慢的情况通常发生在以下几种情况下:5、CPU处理线程最慢的…

删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)

前言:有时候我们会遇到要在数组中删除指定元素,但是不能创建新的数组,那么这个时候应该如何操作呢? ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客 废话不多讲,让我们…

脚本实现Ubuntu设置屏幕无人操作,自动黑屏

使用 xrandr 命令可以实现对屏幕的控制,包括调整分辨率、旋转屏幕以及关闭屏幕等。要实现 Ubuntu 设置屏幕在无人操作一段时间后自动黑屏,非待机,并黑屏后点击触摸屏可以唤醒屏幕,可以借助 xrandr 命令来实现。 首先,…

基于ssm在线云音乐系统的设计与实现论文

摘 要 随着移动互联网时代的发展,网络的使用越来越普及,用户在获取和存储信息方面也会有激动人心的时刻。音乐也将慢慢融入人们的生活中。影响和改变我们的生活。随着当今各种流行音乐的流行,人们在日常生活中经常会用到的就是在线云音乐系统…

macos配置maven

Mac Maven 安装及配置 - 知乎 官网上下载一个zip 配置环境变量vim ~/.bash_profile 我打开来看到之前配过conda的,和教程里不一样。那就在之前的配置下方添加就好了。 既然你的.bash_profile文件中已经有了一些配置,特别是Anaconda的初始化脚本&#…

鸿蒙HarmonyOS应用开发之Rawfile开发指导

场景介绍 开发者可以通过本指导了解在OpenHarmony应用中,如何使用Native Rawfile接口操作Rawfile目录和文件。功能包括文件列表遍历、文件打开、搜索、读取和关闭Rawfile。 接口说明 接口名描述NativeResourceManager *OH_ResourceManager_InitNativeResourceMan…