containerd安装

Containerd是一个开源的容器运行时管理器,用于管理容器的生命周期,包括容器的创建、启动、停止、暂停和销毁。它是Docker Engine的核心组件之一,也是Kubernetes、CRI-O等容器平台的基础组件。

安装Containerd

Containerd的安装非常简单,可以通过各种包管理工具直接安装,也可以从官方网站下载二进制包进行安装。

使用包管理工具安装

Ubuntu/Debian

在Ubuntu或Debian上安装Containerd,可以使用以下命令:

代码语言:javascript
复制
$ sudo apt-get update
$ sudo apt-get install containerd
CentOS/Fedora

在CentOS或Fedora上安装Containerd,可以使用以下命令:

代码语言:javascript
复制
$ sudo yum update
$ sudo yum install containerd
Arch Linux

在Arch Linux上安装Containerd,可以使用以下命令:

代码语言:javascript
复制
$ sudo pacman -S containerd

下载二进制包进行安装

另外,你也可以从官方网站下载Containerd的二进制包进行安装,具体步骤如下:

  1. 前往Containerd的官方网站,下载对应版本的二进制包。
  2. 将下载的二进制包解压到合适的目录下。
  3. 配置Containerd的配置文件,具体方法请见下一节。

配置Containerd

在安装完Containerd之后,需要进行一些基本的配置,以便Containerd能够正常工作。

配置文件

Containerd的配置文件位于/etc/containerd/config.toml,你可以使用任意文本编辑器打开该文件进行修改。该配置文件包含了Containerd的各种配置选项,包括日志、网络、镜像存储等等。

以下是一个简单的配置文件示例:

代码语言:javascript
复制
[debug]
  level = "info"

[grpc]
address = "/run/containerd/containerd.sock"

[plugins."io.containerd.grpc.v1.cri"]
disable_tcp_service = true
stream_server_address = "/run/containerd/containerd.sock"
stream_idle_timeout = "4h"
enable_selinux = false
sandbox_image = "k8s.gcr.io/pause:3.1"

上面的配置文件中,我们设置了Containerd的日志级别为info,将GRPC的地址设置为/run/containerd/containerd.sock,并开启了CRI插件。

镜像存储

在配置Containerd的镜像存储时,需要指定一个或多个镜像存储后端,以便Containerd能够从这些后端中加载镜像。目前Containerd支持的镜像存储后端包括local、docker、oci、registry、snapshot等等,你可以在配置文件中指定这些后端,具体方法如下:

  1. 打开配置文件,找到[plugins."io.containerd.grpc.v1.cri"]部分。
  2. 在该部分下方添加以下内容:
代码语言:javascript
复制
[plugins."io.containerd.grpc.v1.cri".containerd]
snapshotter = "overlayfs"

[plugins."io.containerd.grpc.v1.cri".cni]
bin_dir = "/opt/cni/bin"
conf_dir = "/etc/cni/net.d"

上面的配置中,我们使用了overlayfs作为镜像快照后端,同时指定了CNI的bin和conf目录。

启动Containerd

完成了配置之后,就可以启动Containerd了。使用以下命令启动Containerd:

代码语言:javascript
复制
 sudo systemctl start containerd</code></pre></div></div><p>可以通过以下命令查看Containerd的状态:</p><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>javascript</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-javascript"><code class="language-javascript" style="margin-left:0"> sudo systemctl status containerd

如果Containerd已经成功启动,你应该能够看到类似于以下的输出:

代码语言:javascript
复制
● containerd.service - containerd container runtime
Loaded: loaded (/usr/lib/systemd/system/containerd.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2021-09-01 16:28:23 CST; 13s ago
Docs: https://containerd.io
Main PID: 12345 (containerd)
Tasks: 20
Memory: 26.6M
CGroup: /system.slice/containerd.service
├─12345 /usr/bin/containerd
└─12346 /usr/bin/containerd-shim --runtime=containerd --experimental=false --systemd-cgroup=true --log-level=error --start-timeout=2m --state-dir=/run/containerd/io.containerd.runtime.v1.linux/myservice --socket-path=/run/containerd/containerd.sock mycontainer