Containerd笔记
Containerd 是一个行业标准的容器运行时组件,目前Containerd是Kubernetes默认的容器运行时。
在早期,Docker 曾是 Kubernetes 的容器运行时,Docker内部包含了Containerd,但随着 Docker 的发展,其复杂性逐渐增加,尤其是 Docker Engine 包含了太多的功能(如 Docker Hub、Swarm 等),这导致它与 Kubernetes 的集成变得不够轻量化。
自Kubernetes 1.20版本开始,Kubernetes 弃用Docker,改为接入更轻量、解耦的Containerd,Containerd在K8s下启动时间、使用内存、占用CPU均比Docker要低。
学习资料
安装步骤
安装yum-util并设置为国内阿里下载源:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Containerd:
sudo yum install -y containerd
启动Containerd并设置自启动:
sudo systemctl start containerd
sudo systemctl enable containerd
查看Containerd版本信息:
containerd --version
Containerd相关初始化配置:
# 创建 Containerd 的配置文件:
sudo mkdir -p /etc/containerd/
sudo containerd config default > /etc/containerd/config.toml
# 编辑 /etc/containerd/config.toml 文件,启用沙盒镜像(如 pause 镜像):
vim nano /etc/containerd/config.toml
# config.toml找到如下代码块,将SystemdCgroup = false改成SystemdCgroup = true
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
# config.toml找到sandbox_image = "registry.k8s.io/pause:3.6",将其改成aliyun的地址:
sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google-containers/pause:3.6"
# sandbox_image这是 Containerd 使用的沙盒镜像(通常是 pause 镜像)。将其替换为阿里云的镜像地址,以加快下载速度。
# 以上配置完成后,重新加载配置
sudo systemctl daemon-reload
sudo systemctl restart docker
拉取测试镜像,可以访问国内的 https://docker.aityp.com/ 这个地址,找到busybox测试镜像:
ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/e2e-test-images/busybox:1.29-4
ctr images tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/registry.k8s.io/e2e-test-images/busybox:1.29-4 registry.k8s.io/e2e-test-images/busybox:1.29-4
查看镜像拉取结果:
ctr images list
Containerd命令
查看所有镜像:
ctr images list
拉取镜像:
ctr images pull <镜像地址>
删除镜像:
ctr images rm <镜像ID或名称>
运行容器:
ctr tasks run --image <镜像地址> <容器名称>
查看所有容器:
ctr tasks list
停止容器:
ctr tasks kill -s SIGTERM <容器ID>
启动已停止的容器:
ctr tasks start <容器ID>
查看容器状态:
ctr tasks logs <容器ID>
查看容器详细信息:
ctr containers inspect <容器ID>
删除容器:
ctr tasks delete <容器ID>
查看网络:
ctr network ls
创建网络:
ctr network create --driver <驱动> <网络名称>
删除网络:
ctr network rm <网络名称>
查看容器的文件系统:
ctr content list