Containerd基础
Containerd基础
- containerd和docker之间的关系
docker包含containerd,containerd专注于容器运行时的容器管理。而docker除了容器管理之外还可以完成镜像构建之类的功能。
containerd提供API偏底层,不是给普通用户直接用的,容器编排的开发者才需要containerd。
- containerd在容器生态中扮演的角色
containerd并不是直接面向最终用户的,而是主要用于集成到更上层的系统里,比如kubernetes等容器编排系统。
containerd以daemon 守护进程的形式运行在系统上,通过unix domain socket暴露底层的grpc API,上层系统可以通过这些API管理机器上的容器。
k8s弃用docker做为容器运行时,而使用containerd,
安装和配置
安装
安装yum-utils工具
1 | yum install yum-utils -y |
安装docker-ce源
1 | yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
安装containerd
1 | yum install containerd -y |
初始化
1 | ontainerd config default > /etc/containerd/config.toml |
把生成的配置文件中 sandbox_image = “registry.k8s.io/pause:3.6” 改为国内的镜像源。
sandbox_image = “registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.2”
1 | # 重启containerd |
容器相关操作
注:操作docker的命令行工具是docker,操作containerd的命令行工具时ctr
- 查看containerd命令空间
ctr namespace ls
ctr有命名空间namespace来指定类似于工作空间的隔离区域,使用ctr -n default images ls
来查看default命名空间的镜像,不加-n参数,默认也是使用的default的命名空间。
查看默认名称空间镜像有哪些
ctr image ls
查看k8s命名空间下的镜像
ctr -n k8s.io images ls
拉取busybox镜像
ctr image pull docker.io/library/busybox:latest
注:必须全路径,从dockerhub上下载默认busybox镜像。
删除镜像
ctr images rm
压缩镜像
ctr images export busybox.tar.gz docker.io/library/busybox:latest
导出镜像
ctr images import 文件名
docker的镜像和containerd镜像是通用的,docker save -o 生成的镜像文件可以基于ctr images import 导出来。
基于containerd运行一个容器
这里要解释一个概念,containers和task,在docker里面container概念被弱化,将containers和task整合在一起,基于docker run可以运行容器。
ctr中 containers是镜像实例化的一个虚拟环境,提供一个磁盘,模拟空间,就好比你电脑处于关机状态一样。
ctr中tasks是将容器运行起来,电脑开机了,初始化进程等,task就是这么个形式。
- 创建task运行容器
1 | [root@localhost ~]# ctr run -d docker.io/library/busybox:latest busybox-1 |
- 进入容器
1 | [root@localhost ~]# ctr task exec --exec-id 9441 -t busybox-1 sh |
- 删除task
1 | ctr task rm -f busybox-1 |
- 删除容器
1 | [root@localhost ~]# ctr c ls |
- 查看帮助命令
1 | ctr --help |
扩展
查看容器 ctr c ls
停止容器:停止容器之前需要先停掉容器的task
停掉task ctr tasks kill –signal 9 容器名称
ctr c delete 容器名称
docker build可以构建镜像
ctr命令无法构建镜像