# containerd教程 - 2 containerd安装
# 2.1 二进制方式安装
containerd 有两种形式的安装包,形式如下,举个栗子:
- containerd-x.x.x-linux-amd64.tar.gz:这种安装包用于单击测试没问题,其中不包含 runC,需要提前安装 runC。
- cri-containerd-x.x.x-linux-amd64.tar.gz:这种安装包包含了 containerd、runC、CRI 插件和 CNI 插件,CRI 插件使得
containerd
能够与 K8s 交互,作为 K8s 的容器运行时。CNI 插件则是为了容器间的网络通信,它允许在创建容器时,为容器分配IP地址、配置网络等,使容器可以相互通信或与宿主机、外部网络通信。虽然这种安装包包含了 runC,但是 runC 中包含的安全计算模式库(seccomp,限制容器调用系统资源的模式)有问题,所以这里也需要单独的安装runC。
下面安装 cri-containerd-x.x.x-linux-amd64.tar.gz 这种形式的安装包:
# 1 下载安装包
首先 github 搜索 containerd
搜索到,查看详情,找到 Release
:
然后进入 Release 页面,找到要下载的安装包,下载即可:
在上面直接点击链接地址可以下载,可以将下载的安装包拷贝到 Linux 主机。
或者在上面右键复制链接地址,直接在 Linux 命令行中,在想要存放的目录下执行命令下载,例如:
# AMD64
wget https://github.com/containerd/containerd/releases/download/v1.7.14/cri-containerd-cni-1.7.14-linux-amd64.tar.gz
# arm架构
wget https://github.com/containerd/containerd/releases/download/v1.7.14/cri-containerd-cni-1.7.14-linux-arm64.tar.gz
2
3
4
5
# 2 安装
上面运行了 wget
命令已经将安装包下载下来了。
下面解压压缩包
# 解压压缩包
tar -xzvf cri-containerd-cni-1.7.14-linux-arm64.tar.gz
2
解压后,会出现三个文件夹 etc
、opt
、usr
:
etc
目录主要是 containerd 服务管理的配置文件 和 cni 虚拟网卡配置文件。
opt
目录主要是 gce 环境中使用 containerd 配置文件 和 cni 插件。
usr
目录主要是 containerd 运行时文件,包含 runc。
复制可执行文件
需要复制解压的 usr/local/bin
文件夹下的内容到 系统的 /usr/local/bin
目录下:
sudo cp usr/local/bin/* /usr/local/bin/
为什么复制到 /usr/local/bin/
,因为在解压的 etc/systemd/system
文件夹下有一个 containerd.service
文件,这个是 containerd
的服务文件,文件中指明了 ExecStart=/usr/local/bin/containerd
,也就是 containerd
可执行文件所在的位置,所以要放在 系统的 /usr/local/bin
目录下。
usr/local/bin/
文件夹中的 containerd-shim-runc-v2
文件用于 containerd 和 runC 的交互,所以这里的操作也包括了建立 containerd 与 runC 的链接。
复制服务文件
将解压的 etc/systemd/system
目录下的 containerd.service
文件复制到 /usr/lib/systemd/system/
目录下:
sudo cp etc/systemd/system/containerd.service /usr/lib/systemd/system/containerd.service
# 3 配置
生成 containerd 的配置文件
containerd 的默认配置文件为 /etc/containerd/config.toml
,现在这个文件是不存在的,所以需要创建目录并生成配置文件。
执行如下命令:
# 创建目录
mkdir /etc/containerd
# 生成配置文件
containerd config default > /etc/containerd/config.toml
# 查看生成的配置文件
cat /etc/containerd/config.toml
2
3
4
5
6
7
8
修改配置:
sandbox_image = "registry.k8s.io/pause:3.9" # k8s默认使用的是3.9版本,所以改为3.9
# 4 设置开机自启动
# 设置开机自启
systemctl enable containerd
# 启动服务
systemctl start containerd
2
3
4
# 5 查看 containerd 服务状态
systemctl status containerd
# 6 查看 containerd 的版本
在使用 docker 的时候,会安装 docker-client
客户端工具,通过 docker-client
,我们可以在命令行使用 docker 命令来进行镜像、容器等操作。
同样,刚才安装的时候,在解压的 usr/local/bin
目录下有一个客户端工具 ctr
,使用它来进行容器的管理操作。
# 查看containerd版本
ctr version
2
显示如下:
# 2.2 安装runC
containerd 只是对容器的管理,例如启停、网络、存储等管理,真正负责容器运行的是 runC。所需需要为 containerd 安装 runC。
因为 containerd 的二进制安装包 cri-containerd-x.x.x-linux-amd64.tar.gz
中提供的 runC 默认需要系统中安装 安全计算模式 库(seccomp,限制容器调用系统资源的模式),所以我们需要单独安装 seccomp,但是不同版本 runC 对 seccomp 的版本要求不一样,我们单独安装 seccomp 可能比较麻烦,所以建议单独下载 runC 去安装,因为里面包含了 seccomp 库文件的支持,这样就不会有问题了。
# 1 下载安装包
首先 github 搜索 runc
:
搜索到,查看详情,找到 Release
:
然后进入 Release 页面,找到要下载的安装包,下载即可:
在上面直接点击链接地址可以下载,可以将下载的安装包拷贝到 Linux 主机。
或者在上面右键复制链接地址,直接在 Linux 命令行中,在想要存放的目录下执行命令下载,例如:
# AMD64
wget https://github.com/opencontainers/runc/releases/download/v1.1.12/runc.amd64
# arm架构
wget https://github.com/opencontainers/runc/releases/download/v1.1.12/runc.arm64
2
3
4
5
# 2 安装
下载完成,是一个 runc.amd64
或 runc.arm64
文件。
将其移动为 /usr/sbin/
目录下,并重命名为 runc
:
mv runc.amd64 /usr/sbin/runc
然后为 runc
添加可执行权限:
chmod +x /usr/sbin/runc
# 3 验证安装
验证 runc 是否安装成功,查看 runc 版本:
runc -v