Containerd 运维实践指南¶
安装与配置¶
安装 containerd¶
# Ubuntu/Debian
apt-get update
apt-get install -y containerd
# CentOS/RHEL
yum install -y containerd
# 启动 containerd 服务
systemctl enable containerd
systemctl start containerd
配置 containerd¶
默认配置文件位置:/etc/containerd/config.toml
version = 2
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "registry.k8s.io/pause:3.6"
[plugins."io.containerd.grpc.v1.cri".containerd]
default_runtime_name = "runc"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
runtime_type = "io.containerd.runc.v2"
命令行工具使用¶
ctr 命令使用¶
ctr 是 containerd 的官方命令行工具,用于与 containerd 守护进程交互。
镜像管理¶
# 拉取镜像
ctr image pull docker.io/library/nginx:latest
# 列出镜像
ctr image ls
# 删除镜像
ctr image rm docker.io/library/nginx:latest
# 标记镜像
ctr image tag docker.io/library/nginx:latest my-nginx:latest
容器管理¶
# 创建容器
ctr container create docker.io/library/nginx:latest nginx-container
# 列出容器
ctr container ls
# 启动容器
ctr task start nginx-container
# 查看容器进程
ctr task ls
# 停止容器
ctr task kill nginx-container
# 删除容器
ctr container rm nginx-container
命名空间管理¶
# 创建命名空间
ctr namespace create my-namespace
# 列出命名空间
ctr namespace ls
# 在指定命名空间操作
ctr -n my-namespace image pull docker.io/library/nginx:latest
nerdctl 命令使用¶
nerdctl 是一个与 Docker CLI 兼容的命令行工具,使用方式与 docker 命令类似。
镜像管理¶
# 拉取镜像
nerdctl pull nginx:latest
# 列出镜像
nerdctl images
# 删除镜像
nerdctl rmi nginx:latest
# 构建镜像
nerdctl build -t my-app:latest .
# 指定 namespace 查看
nerdctl --namespace k8s.io images
# 指定 namespace 导入镜像
nerdctl --namespace k8s.io load -i vllm-0.7.2-2204-py310-cu124-lixie.tar
容器管理¶
# 运行容器
nerdctl run -d --name nginx nginx:latest
# 列出容器
nerdctl ps
# 停止容器
nerdctl stop nginx
# 删除容器
nerdctl rm nginx
# 查看容器日志
nerdctl logs nginx
网络管理¶
# 创建网络
nerdctl network create my-network
# 列出网络
nerdctl network ls
# 删除网络
nerdctl network rm my-network
常见问题排查¶
日志查看¶
# 查看 containerd 服务日志
journalctl -u containerd
# 查看容器日志
ctr task logs nginx-container
性能监控¶
# 查看容器资源使用情况
ctr task metrics nginx-container
# 查看 containerd 进程状态
ps aux | grep containerd
故障排查¶
- 服务无法启动
- 检查配置文件语法
- 查看系统日志
-
确认端口占用情况
-
容器无法创建
- 检查镜像是否存在
- 验证存储空间
-
检查权限设置
-
网络问题
- 检查 CNI 配置
- 验证网络插件状态
- 检查防火墙规则
最佳实践¶
- 定期清理未使用的镜像和容器
- 使用命名空间隔离不同环境
- 配置适当的资源限制
- 保持 containerd 版本更新
- 定期备份重要数据
- 监控系统资源使用情况
安全建议¶
- 使用非 root 用户运行容器
- 定期更新系统和容器镜像
- 限制容器权限
- 使用安全的基础镜像
- 实施网络隔离
- 配置审计日志