# 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
1
2
3
4
5

# 2 安装

上面运行了 wget 命令已经将安装包下载下来了。

下面解压压缩包

# 解压压缩包
tar -xzvf cri-containerd-cni-1.7.14-linux-arm64.tar.gz 
1
2

解压后,会出现三个文件夹 etcoptusr

etc 目录主要是 containerd 服务管理的配置文件 和 cni 虚拟网卡配置文件。

opt 目录主要是 gce 环境中使用 containerd 配置文件 和 cni 插件。

usr 目录主要是 containerd 运行时文件,包含 runc。


复制可执行文件

需要复制解压的 usr/local/bin 文件夹下的内容到 系统的 /usr/local/bin 目录下:

sudo cp usr/local/bin/* /usr/local/bin/
1

为什么复制到 /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
1

# 3 配置

生成 containerd 的配置文件

containerd 的默认配置文件为 /etc/containerd/config.toml ,现在这个文件是不存在的,所以需要创建目录并生成配置文件。

执行如下命令:

# 创建目录
mkdir /etc/containerd

# 生成配置文件
containerd config default > /etc/containerd/config.toml

# 查看生成的配置文件
cat /etc/containerd/config.toml
1
2
3
4
5
6
7
8

修改配置:

sandbox_image = "registry.k8s.io/pause:3.9"			# k8s默认使用的是3.9版本,所以改为3.9
1

# 4 设置开机自启动

# 设置开机自启
systemctl enable containerd
# 启动服务
systemctl start containerd
1
2
3
4

# 5 查看 containerd 服务状态

systemctl status containerd
1

# 6 查看 containerd 的版本

在使用 docker 的时候,会安装 docker-client 客户端工具,通过 docker-client,我们可以在命令行使用 docker 命令来进行镜像、容器等操作。

同样,刚才安装的时候,在解压的 usr/local/bin 目录下有一个客户端工具 ctr,使用它来进行容器的管理操作。

# 查看containerd版本
ctr version
1
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
1
2
3
4
5

# 2 安装

下载完成,是一个 runc.amd64runc.arm64 文件。

将其移动为 /usr/sbin/ 目录下,并重命名为 runc

mv runc.amd64 /usr/sbin/runc
1

然后为 runc 添加可执行权限:

chmod +x /usr/sbin/runc
1

# 3 验证安装

验证 runc 是否安装成功,查看 runc 版本:

runc -v
1