Containerd安装与使用
2022-10-12
1|0Containerd 的技术方向和目标
- 简洁的基于 gRPC 的 API 和 client library
- 完整的 OCI 支持(runtime 和 image spec)
- 同时具备稳定性和高性能的定义良好的容器核心功能
- 一个解耦的系统(让 image、filesystem、runtime 解耦合),实现插件式的扩展和重用
为什么需要独立的 containerd:
- 以往隶属于docker项目中,现如今从整体 docker 引擎中分离出的项目(开源项目的思路)
- 可以被 Kubernets CRI 等项目使用(通用化)
- 为广泛的行业合作打下基础(就像 runC 一样)
containerd的架构设计图:
2|0安装containerd
验证仓库版本:
ubuntu在线仓库版本不是最新,可以使用github仓库中的新版本,使用二进制方式部署
下载二进制安装包
github链接地址:https://github.com/containerd/containerd/releases
选择64位x86架构系统安装包
上传安装包到服务器并开始解压安装
解压缩并将containerd执行文件放入系统默认命令路径下
创建containerd systemd service启动管理文件:
修改ExecStart=/usr/local/bin/containerd为当前containerd文件路径
重新加载系统管理服务文件
创建配置文件
生成模板配置文件
修改配置文件
vim下搜索/mirrors,添加镜像加速,使用docker镜像源即可,上下级配置,缩进两个空格。
如果是从docker.io下载进行,则使用endpoint配置的镜像站点加速下载
启动containerd并设置开机自启动
3|0安装runc
github下载链接:https://github.com/opencontainers/runc/releases
下载最新版本
上传到服务器
4|0验证使用containerd
containerd是ctrl工具在服务器上创建、管理和使用容器
拉取镜像
与docker区别在于拉取官方镜像必须指定镜像的完整名称包括镜像仓库地址
查看本地的镜像
运行容器
5|0container客户端工具
客户端工具有两种,分别是crictl和nerdctl
推荐使用nerdctl,使用效果与docker命令的语法一致
github下载链接:https://github.com/containerd/nerdctl/releases
下载安装nerdctl
解压安装nerdctl
拷贝nerdctl到系统二进制命令路径下
验证版本
查看nerdctl使用帮助,与docker客户端工具使用方法基本一致
查看镜像、容器:
拉取镜像:
6|0安装cni网络插件
CNI:Container network interface容器网络接口,为容器分配ip地址网卡等
github链接:
下载安装cni,并解压到/usr/local/cni/bin目录下
查看解压后的cni插件文件:
注意:必须将cni解压到/opt/cni/bin,否则nerdctl为容器映射端口时,会出现找不到cni插件的报错
验证:使用nerdctl运行一个容器
宿主机访问容器映射到宿主机80端口