Containerd容器介绍
官方文档: https://containerd.io
概述
Containerd是一个工业级标准的容器运行时,它由Docker公司开发并贡献给了Cloud·Native Computing·Foundation(CNCF)。它提供了基本的容器管理功能,包括容器镜像的传输和存储、容器 的执行和管理、容器的网络管理等。与Docker相比,Containerd更加轻量化和模块化,可以更好地与 Kubernetes等容器编排系统集成。
containerd只能运行和拉取镜像,不能制作镜像
发展
-
从Docker 1.11版本开始,Docker公司将Containerd从Docker中分离出来,并将其作为一个 独立的开源项目提交给CNCF进行维护。这是因为Docker作为一个完整的容器平台,包含了很多不必 要的功能,而且代码比较庞大,难以维护。Containerd则是一个更加专注于容器管理的运行时,可以更 好地满足云原生应用的需求。
-
K8s1.24版本开始,不在支持docker,为什么? 第一,Docker·的发展方向与·Kubernetes·并不完全一致,Docker·更注重整个生态系统,而 Kubernetes·更关注以容器为中心。 第二,containerd·是一个工业级标准的容器运行时,它可以更好地与·Kubernetes·集成,并提供 更好的性能和可用性,更轻量。( 第三,它不符合Kubernetes的CRl(容器运行时接口)规范,Docker不符合Kubernetes·CRI 规范的原因有几个: 1)过于庞大:Docker是一个庞大的软件包,其中包含了大量的功能,这些功能并不都是 Kubernetes需要的。这使得Docker的部署和管理变得复杂,也不利于轻量级容器的运行。 2)APl不稳定:Docker的API并不是为Kubernetes设计的,因此在Kubernetes环境中使用 Docker会出现API不稳定的情况,这会导致兼容性问题和不必要的麻烦。 3)安全性问题:Docker的安全模型并不是为Kubernetes设计的,这可能会导致在Kubernetes 环境中运行容器时出现不必要的安全风险。
containerd安装与配置
$ yum install containerd.io-1.6.22 --allowerasing -y
# 查看版本
$ ctr version
- 生成配置文件
containerd config default > /etc/containerd/config1.toml
- 修改 containerd 配置文件 /etc/containerd/config.toml
...
SystemdCgroup = true
...
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.59.63".tls]
insecure_skip_verify = true
[plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.59.63".auth]
username = "admin"
password = "Harbor12345"
[plugins."io.containerd.grpc.v1.cri".registry.headers]
# 改成自己的镜像源
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.59.63"]
endpoint = ["https://192.168.59.63:443"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["crpi-cs92oq2e1ryfz2xe.cn-chengdu.personal.cr.aliyuncs.com"]
- 重启
$ systemctl enable containerd.service
$ systemctl restart containerd.service
$ systemctl status containerd.service
containerd 命令行工具 ctr
- 拉取
# 拉取镜像,必须完整格式
$ ctr image pull docker.io/library/nginx:latest
# 查看镜像
$ ctr image ls
- 导出
$ ctr image pull registry.aliyuncs.com/google_containers/pause:3.2
# 导出
$ ctr image export pause.tar.gz registry.aliyuncs.com/google_containers/pause:3.2
# 可供docker 导入
$ docker load -i pause.tar.gz
- 导入
$ docker save -o nginx.tar nginx:latest
# 导入
$ ctr image import nginx.tar
-
跟docker对比

-
从 harbor 拉取镜像
$ ctr image pull 192.168.59.63/test/tomcat:v1 --skip-verify --user=admin:Harbor12345
# 查看镜像
$ ctr image ls