二进制部署containerd

部署containerd

简介

本文档介绍采用二进制方式部署containerd组件的简单流程;

环境

包名版本下载地址
containerd-1.6.9-linux-amd64.tar.gz1.6.9github:https://github.com/containerd/containerd/releases/tag/v1.6.9

部署

创建相关目录并上传

mkdir -p /mnt/data_disk/my_src/containerd/v1.6.9
mv /tmp/containerd-1.6.9-linux-amd64.tar.gz /mnt/data_disk/my_src/containerd/v1.6.9

解压

tar -xvf containerd-1.6.9-linux-amd64.tar.gz

[root@buildkitd v1.6.9]# ls
bin  containerd-1.6.9-linux-amd64.tar.gz
[root@buildkitd v1.6.9]# ls bin
containerd  containerd-shim  containerd-shim-runc-v1  containerd-shim-runc-v2  containerd-stress  ctr

复制可执行文件并测试

[root@buildkitd v1.6.9]# cp bin/* /usr/local/bin/
[root@buildkitd v1.6.9]# ls /usr/local/bin/
containerd  containerd-shim  containerd-shim-runc-v1  containerd-shim-runc-v2  containerd-stress  ctr
[root@buildkitd v1.6.9]# containerd -v
containerd github.com/containerd/containerd v1.6.9 1c90a442489720eec95342e1789ee8a5e1b9536f

制作service服务文件

service文件模板可以从apt安装后获得;

[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target

[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd        # 字段代表containerd可执行文件位置,根据以上操作,指向到/usr/local/bin/containerd即可;

Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=infinity
# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this version.
TasksMax=infinity
OOMScoreAdjust=-999

[Install]
WantedBy=multi-user.target

创建containerd配置文件

当containerd正确安装后,可以通过# containerd config default查询默认配置,所以可以通过将该命令结果进行输出重定向的方式来获得配置文件模板;

mkdir /etc/containerd

containerd config default > /etc/containerd/config.toml

编辑配置文件

153       [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
154         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]	# 表示对docker.io域名加速;
155           endpoint = ["https://9916w1ow.mirror.aliyuncs.com"]	# 表示当访问docker.io这个域名时通过https://9916w1ow.mirror.aliyuncs.com进行加速;
.
.
.
161   [plugins."io.containerd.internal.v1.opt"]
162     path = "/mnt/data_disk/my_src/containerd/data"	# 将默认存储位置/opt/containerd修改为自创目录(根据实际情况修改);
.
.

重启服务并确认状态

[root@buildkitd containerd]# systemctl restart containerd
[root@buildkitd containerd]# systemctl status containerd
● containerd.service - containerd container runtime
   Loaded: loaded (/usr/lib/systemd/system/containerd.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2024-01-10 15:20:21 CST; 10s ago
     Docs: https://containerd.io
  Process: 12174 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)
 Main PID: 12176 (containerd)
    Tasks: 9
   Memory: 17.9M
   CGroup: /system.slice/containerd.service
           └─12176 /usr/local/bin/containerd # containerd /usr/local/bin/containerd

Jan 10 15:20:21 buildkitd containerd[12176]: time="2024-01-10T15:20:21.028161152+08:00" level=error msg="failed to load cni during init, pl... config"
Jan 10 15:20:21 buildkitd containerd[12176]: time="2024-01-10T15:20:21.028665098+08:00" level=info msg=serving... address=/run/containerd/c...ck.ttrpc
Jan 10 15:20:21 buildkitd containerd[12176]: time="2024-01-10T15:20:21.028998040+08:00" level=info msg=serving... address=/run/containerd/c...erd.sock
Jan 10 15:20:21 buildkitd containerd[12176]: time="2024-01-10T15:20:21.029132303+08:00" level=info msg="containerd successfully booted in 0.049215s"
Jan 10 15:20:21 buildkitd containerd[12176]: time="2024-01-10T15:20:21.040840027+08:00" level=info msg="Start subscribing containerd event"
Jan 10 15:20:21 buildkitd containerd[12176]: time="2024-01-10T15:20:21.040970928+08:00" level=info msg="Start recovering state"
Jan 10 15:20:21 buildkitd containerd[12176]: time="2024-01-10T15:20:21.041113550+08:00" level=info msg="Start event monitor"
Jan 10 15:20:21 buildkitd containerd[12176]: time="2024-01-10T15:20:21.041158568+08:00" level=info msg="Start snapshots syncer"
Jan 10 15:20:21 buildkitd containerd[12176]: time="2024-01-10T15:20:21.041188315+08:00" level=info msg="Start cni network conf syncer for default"
Jan 10 15:20:21 buildkitd containerd[12176]: time="2024-01-10T15:20:21.041276846+08:00" level=info msg="Start streaming server"
Hint: Some lines were ellipsized, use -l to show in full.

[root@buildkitd containerd]# ls /mnt/data_disk/
buildkitd/  lost+found/ my_src/
[root@buildkitd containerd]# ls /mnt/data_disk/my_src/containerd/data/
bin  lib
[root@buildkitd containerd]# systemctl enable containerd

安装runc

runc是容器运行的标准化接口;

mkdir -p /mnt/data_disk/my_src/runC/v1.1.11

yum -y install wget

cd /mnt/data_disk/my_src/runC/v1.1.11
wget https://github.com/opencontainers/runc/releases/download/v1.1.11/runc.amd64

chmod +x ./runc.amd64
ln -s /mnt/data_disk/my_src/runC/v1.1.11/runc.amd64 /usr/local/bin/runc

[root@buildkitd v1.1.11]# runc -v
runc version 1.1.11
commit: v1.1.11-0-g4bccb38c
spec: 1.0.2-dev
go: go1.20.12
libseccomp: 2.5.4

使用containerd下载镜像进行测试

ctr images pull docker.io/library/alpine:latest

ctr下载镜像测试

安装nerdctl

nerdctl是针对containerd的上层封装工具,实现了 container,volume,network 的创建和管理,类似于docker命令;

mkdir -p /mnt/data_disk/my_src/nerdctl/v1.7.2
mv /tmp/nerdctl-1.7.2-linux-amd64.tar.gz /mnt/data_disk/my_src/nerdctl/v1.7.2

tar -xvf nerdctl-1.7.2-linux-amd64.tar.gz
ln -s /mnt/data_disk/my_src/nerdctl/v1.7.2/nerdctl /usr/local/bin/nerdctl
[root@buildkitd v1.7.2]# nerdctl -v
nerdctl version 1.7.2
安装cni
[root@buildkitd ~]# mkdir -p /mnt/data_disk/my_src/cni/v1.4.0
[root@buildkitd ~]# mv /tmp/cni-plugins-linux-amd64-v1.4.0.tgz /mnt/data_disk/my_src/cni/v1.4.0/
[root@buildkitd ~]# cd /mnt/data_disk/my_src/cni/v1.4.0/
[root@buildkitd v1.4.0]# tar -xvf cni-plugins-linux-amd64-v1.4.0.tgz
# 注意cni的可执行文件必须要保存到/opt/cni/bin下;
[root@buildkitd v1.4.0]# mkdir -p /opt/cni/bin
[root@buildkitd v1.4.0]# cp ./* /opt/cni/bin/
[root@buildkitd v1.4.0]# rm -rf /opt/cni/bin/cni-plugins-linux-amd64-v1.4.0.tgz

使用nerdctl创建容器并运行

nerdctl测试

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Containerd是一个轻量级的容器运行时工具,其中包含了最小的容器操作命令和基本的容器生命周期管理功能。它是Kubernetes等现代容器编排工具所支持的底层容器运行时之一。Containerd可以通过二进制包的方式进行安装。 首先,需要前往Containerd官方网站(https://containerd.io/downloads/)下载适合自己系统的二进制包。下载完成后,解压缩文件。 建议将解压后的文件夹移动到/opt/containerd下,这样可以方便地管理容器运行时。进入文件夹后,可以看到一个名为containerd的可执行文件,这个文件就是容器运行时的启动文件。 将containerd文件复制到系统的bin目录下,即可在命令行中执行containerd命令,以启动容器功能。在Ubuntu系统中,可以使用以下命令安装Containerd: ```bash #下载Containerd wget https://storage.googleapis.com/cri-containerd-release/cri-containerd-1.2.10.linux-amd64.tar.gz #解压缩文件 sudo tar -C / -xzf cri-containerd-1.2.10.linux-amd64.tar.gz #启动Containerd sudo systemctl start containerd ``` 在CentOS系统中,可以使用以下命令安装Containerd: ```bash #下载Containerd curl -LO https://storage.googleapis.com/cri-containerd-release/cri-containerd-1.2.10.linux-amd64.tar.gz #解压缩文件 sudo tar -C / -xzf cri-containerd-1.2.10.linux-amd64.tar.gz #启动Containerd sudo systemctl start containerd ``` 完成以上步骤后,就可以在系统中使用Containerd了。可以使用docker命令测试容器是否正常工作,比如运行以下命令: ```bash docker run -d --name test hello-world ``` 如果容器正常运行并输出"Hello from Docker!",则说明已经成功安装并使用Containerd进行管理容器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值