containerd常用命令

chililopp 2024-09-05 09:37:01 阅读 69

        上回书说到k8s1.24版本为什么弃用docker而选择containerd作为容器运行时,这回我就来深入学习一下containerd,先从常用命令开始;

一、containerd常用基础命令

        首先是containerd常用的基础命令,包括开启、关闭、查看状态等:

<code> systemctl status containerd #查看containerd状态

systemctl start containerd #开启containerd

systemctl stop containerd #关闭containerd

systemctl restart containerd #重启containerd

systemctl enable containerd #将containerd设置为开机自启动

containerd help #查看containerd帮助

containerd version #查看containerd版本

二、docker常用操作命令:

通过查看containerd命令帮助,可以知道

ctr --help #查看containerd命令帮助

containerd常用的操作命令格式为:

        ctr [global options] command [command options] [arguments...]

command命令选项如下:

命令 说明
plugins, plugin 提供有关容器插件的信息
version 打印客户端和服务器的版本
containers, c, container 容器管理
content 内容管理
events, event 显示容器事件
images, image, i 镜像管理
leases 租约管理
namespaces, namespace, ns 命名空间管理
pprof 为 containerd 提供 golang pprof 输出
run 运行容器
snapshots, snapshot 快照管理
tasks, t, task 任务管理
install 安装package
oci oci工具
deprecations 
shim 直接与shim交互
help, h 显示命令列表或一个命令的帮助

global options选项如下:

选项 说明
--debug 打开日志调试
--address value, -a value

containerd的GRPC服务地址

默认 "/run/containerd/containerd.sock"

--timeout value ctr命令超时时间
--connect-timeout value 连接到容器超时
 --namespace value, -n value

命名空间与命令一起使用

默认 "default"

--help, -h   帮助
 --version, -v 版本

三、docker常用操作命令实践

1.查看containerd命名空间

<code>ctr namespace ls #查看containerd命名空间

命名空间 namespace 来于指定类似于工作空间的隔离区域。

2.查看containerd的镜像

<code>ctr images ls

  因为没有指定namespace,所以查看的是默认命名空间下的镜像;

<code>ctr -namespace=moby images ls

 查看指定命名空间moby下的镜像

3.拉取containerd的镜像

<code>ctr -n k8s.io images pull registry.aliyuncs.com/google_containers/pause-amd64:3.2

 指定k8s.io为命名空间拉取pause-amd64:3.2的镜像

​4.删除containerd的镜像

<code>ctr -n k8s.io images rm sha256:80d28bedfe5dec59da9ebf8e6260224ac9008ab5c11dbbe16ee3ba3e4439ac2c

删除k8s.io下的镜像

5.导出containerd的镜像

<code>ctr -n k8s.io images export pause.tar.gz registry.aliyuncs.com/google_containers/pause-amd64:3.2

6.导入containerd的镜像

<code>ctr -n k8s.io image import pause.tar.gz

7.标记containerd的镜像

<code>ctr -n k8s.io images tag registry.aliyuncs.com/google_containers/pause-amd64:3.2 pause:3.2

 我经过测试发现docker save -o 命令导出来的镜像可以用ctr images import 导出;同理ctr images export导出来的镜像也可以有docker load 还原;

所以两者应该是通用的;

8.运行containerd的容器

<code>ctr -n k8s.io run -d docker.io/library/centos:latest centos_k8s

在后台运行一个centos镜像的容器,名称叫做centos_k8s;

9.查看运行容器的task

<code> ctr -n k8s.io task ls

        在docker里面,container的概念被弱化,所以docker里面的容器应该是containers和task整合在一起的;

        在containerd中,containers是镜像实例化的一个虚拟环境,提供一个磁盘、模拟空间;而task是一个初始化进程,负载运行这个虚拟环境;

10.启动指定容器的task

<code>ctr -n k8s.io task start -d centos_k8s

11.进入指定容器的task

<code> ctr -n k8s.io task exec --exec-id 3118 -t centos_k8s /bin/bash

​12.删除指定容器的task

<code>ctr -n k8s.io task rm -f centos_k8s

 

13.停止指定容器的task

<code>ctr -n k8s.io task kill --signal 9 centos_k8s

 

14.查看容器

<code> ctr -n k8s.io c list

15.删除容器

<code> ctr -n k8s.io c rm centos

删除容器以前需要将task删除,不然会报以下错误:

四、docker与containerd常用命令对比

        很明细docker与containerd命令类型,但又有不同,我总结了一下docker与containerd命令的对比:

说明 docker命令 containerd命令
查看本地镜像 docker images ctr images ls
拉取镜像 docker pull imagename ctr images pull imagename
推送镜像 docker push imagename ctr images push imagename
给镜像打标签 docker tag imagename tagname  ctr images tag imagename tagname
导出镜像 docker save filename imagename ctr images export filename imagename
导入镜像 docker load filename ctr image import filename
运行并创建容器 docker run [options] imagename commond

ctr run [options]  imagename

containername

进入容器 docker exec [options] names commond  ctr task exec  [options]   names commond
查看运行的容器 docker ps  ctr task list
删除容器 docker rm [options] names

1.ctr task rm -f names

2. ctr c rm -f  names

        ps:docker可以基于dockerfile构建对象,但是ctr命令无法构建对象;


        我是chililopp,正在学习k8s,之后如果有新的总结或者体验也会发出来,如果有说的不对的地方,还请指点,十分感谢阅读!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。