Containerd 的镜像和容器管理

本文详细介绍Containerd的基础操作,包括镜像管理和容器管理等关键步骤。从镜像的拉取、导出到容器的创建、启动及各种状态管理,帮助读者快速掌握Containerd的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.  镜像管理:

        1.  查看镜像列表:

[root@node2 ~]# ctr images/image/i ls

        2.  拉取镜像:

[root@node2 ~]# ctr images pull --platform linux/amd64 docker.io/library/busybox:latest

--platform:指定要拉取得镜像的平台

        3.  镜像挂载,把已下载的容器镜像挂载至宿主机的目录中:

命令格式:ctr images mount 镜像名 挂载的目录

[root@node2 ~]# ctr images mount docker.io/library/busybox:latest /mnt

        4.  卸载:

[root@node2 ~]# umount /mnt

        5.  镜像导出:

## 下载镜像
[root@node2 ~]# ctr images pull --all-platforms docker.io/library/busybox:latest

--all-platforms:表示下载所有平台的busybox:latest镜像

## 导出镜像
[root@node2 ~]# ctr images export --all-platforms nginx-alpine.img(导出的文件名) 
docker.io/library/nginx:alpine(要导出的镜像)

        6.  镜像导入:

[root@node2 ~]# ctr images import nginx-alpine.img(要导入的镜像文件)

注意:直接导入镜像可能会出现类似"ctr: content digest sha256:xxxxxxx not found"的错误,因此在拉取和导出镜像时,都要指定" --all-platforms "参数再导入镜像。

        7.  删除镜像:

[root@node2 ~]# ctr images rm docker.io/library/busybox:latest

        8.  给镜像打标记tag:

[root@node2 ~]# ctr images tag docker.io/library/busybox:latest busybox:latest

        再次查看镜像列表:

 二.  容器管理:

        1.  静态容器命令查询:

[root@node2 ~]# ctr containerd --help

[root@node2 ~]# ctr c -h

        2.  查看容器列表:

[root@node2 ~]# ctr container/containers/c ls

        3.  查看任务列表:当容器运行起来的时候才会产生任务。

[root@node2 ~]# ctr task/task/t ls

        4.  创建静态容器:

[root@node2 ~]# ctr c create busybox:latest busybox

[root@node2 ~]# ctr c ls
CONTAINER    IMAGE             RUNTIME                  
busybox      busybox:latest    io.containerd.runc.v2

        5.  启动静态容器,启动task,即表时在容器中运行了进程,即为动态容器。:

[root@node2 ~]# ctr t start -d busybox(容器名)

[root@node2 ~]# ctr t ls
TASK       PID     STATUS    
busybox    1510    RUNNING

-d:表示daemon或者后台的意思,否则会卡住终端

        6.  进入到动态容器:

[root@node2 ~]# ctr -n default task exec --exec-id $RANDOM -t busybox sh

-n:表示指定命名空间
-t:表示提供一个终端

        7.  查看容器详细信息:

[root@node2 ~]# ctr c info busybox

        8.  直接运行一个动态容器:

[root@node2 ~]# ctr run -d --net-host busybox:latest busybox2

-d:表示dameon,后台运行
--net-host:表示容器的IP就是宿主机的IP(相当于docker里的host类型网络)

## 查看容器列表:
[root@node2 ~]# ctr c ls
CONTAINER    IMAGE             RUNTIME                  
busybox      busybox:latest    io.containerd.runc.v2    
busybox2     busybox:latest    io.containerd.runc.v2 

## 查看任务列表:
[root@node2 ~]# ctr t ls
TASK        PID     STATUS    
busybox     1510    RUNNING
busybox2    1637    RUNNING


## 进入到容器
[root@node2 ~]# ctr -n default task exec --exec-id $RANDOM -t busybox2 sh

        9.  暂停容器:

[root@node2 ~]# ctr t pause busybox2

[root@node2 ~]# ctr t ls
TASK        PID     STATUS    
busybox     1510    RUNNING
busybox2    1637    PAUSED

        10.  恢复容器:

[root@node2 ~]# ctr t resume busybox2

[root@node2 ~]# ctr t ls
TASK        PID     STATUS    
busybox2    1637    RUNNING
busybox     1510    RUNNING

        11.  停止容器:

## 使用kill命令停止容器中运行的进程,既为停止容器
[root@node2 ~]# ctr tasks kill busybox2

## 查看容器停止后状态,STATUS为STOPPED
TASK      PID      STATUS
busybox 10660     STOPPED
busybox2 9823     RUNNING

        12.  删除容器:

[root@node2 ~]# ctr t delete busybox2  ## 删除已经停止的容器

[root@node2 ~]# ctr t delete -f busybox2  ## 强制删除容器,包括正在运行的容器

## 查看任务列表:
[root@node2 ~]# ctr t ls
TASK       PID     STATUS    
busybox    1510    RUNNING

## 查看容器列表:
[root@node2 ~]# ctr c ls
CONTAINER    IMAGE             RUNTIME                  
busybox      busybox:latest    io.containerd.runc.v2    
busybox2     busybox:latest    io.containerd.runc.v2

        13.  查看命名空间列表:

[root@node2 ~]# ctr ns ls
NAME    LABELS 
default   

        14.  创建命名空间:

[root@node2 ~]# ctr ns c it(命名空间名称)

[root@node2 ~]# ctr ns ls
NAME    LABELS 
default        
it 

        15.  删除命名空间:

[root@node2 ~]# ctr ns rm it

### Containerd 镜像使用管理 #### 查看镜像列表 为了查看当前系统中存在的所有镜像,可以利用 `ctr` 命令工具执行如下命令: ```bash ctr images list ``` 这条指令会展示出所有的镜像及其对应的标签、大小以及其他元数据信息[^1]。 #### 下载新镜像 当需要下载一个新的镜像到本地时,可以通过指定仓库地址来拉取所需镜像。例如要获取官方最新的 Nginx 镜像,则可运行下面的命令: ```bash ctr i pull docker.io/library/nginx:latest ``` 此命令中的参数指定了 Docker Hub 上托管的一个特定版本的 Nginx 容器镜像,并将其存储于本地环境中以便后续创建容器实例所用[^2]。 #### 删除不再使用的镜像 对于那些已经不再被任何现有容器依赖或者想要清理掉冗余资源的情况来说,应当先确认目标对象再谨慎移除它们。删除单个镜像的操作方式如下所示: ```bash ctr i rm <IMAGE_ID> ``` 这里的 `<IMAGE_ID>` 是指具体某张图片独一无二的身份标识符字符串;如果不确定确切 ID 可通过前面提到过的 “images list” 功能查询获得完整的清单记录之后再做决定如何处理多余项[^3]。 #### 列出命名空间内的镜像 考虑到 containerd 支持多租户特性并引入了 namespace 的概念,在某些场景下可能还需要限定范围仅显示某个特定命名空间下的全部镜像集合。此时应该附加额外选项以满足需求: ```bash ctr -n=<NAMESPACE_NAME> images list ``` 上述语法结构里的 `-n=` 参数后面紧跟的就是期望访问的目标名称空间名字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值