文章目录
前言
GitHub:https://github.com/containerd/containerd
环境说明
操作系统版本:CentOS Linux release 7.9.2009 (Core)
操作系统安装包:CentOS-7-x86_64-Minimal-2009.iso
Docker 版本:Docker Engine - Community 24.0.7
containerd 版本:1.6.24
安装部署(通过 yum)
官方文档:https://github.com/containerd/containerd/blob/main/docs/getting-started.md
shell
# 官方推荐:参考Docker 官方文档 https://docs.docker.com/engine/install/centos/
# 配置 repository
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装部署
yum install -y docker-ce containerd.io
# 启动服务
systemctl start docker
# 验证
docker version
ctr version
测试
shell
# 拉取镜像
ctr i pull docker.io/library/nginx:1.24
# 查看镜像列表
ctr i ls
# 启动服务
ctr run --net-host -d docker.io/library/nginx:1.24 test
# 查看容器
ctr c ls
# 查看任务
ctr t ls
# 查看 80 端口监听情况
ss -ntl|grep 80
# 开放 80 端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重启防火墙
systemctl restart firewalld.service
验证服务是否正常启动
方法:通过浏览器访问 http:ip (默认 80 端口) 显示 Nginx 页面 Welcome to nginx!
常用相关命令
shell
# 帮助
ctr -h
# 镜像
# 帮助
ctr i -h
# 拉取镜像
ctr i pull docker.io/library/busybox:1.36.1
# 查看镜像
ctr i ls
# 删除镜像
ctr i rm docker.io/library/busybox:1.36.1
# 容器
# 帮助
ctr c -h
# 创建容器
ctr c create docker.io/library/nginx:1.24 test
# 查看容器
ctr c ls
# 查看容器配置
ctr c info test
# 删除容器
ctr c rm test
# 任务
ctr t -h
# 启动任务
ctr t start -d test
# 查看任务
ctr t ls
# 进入容器(注意:必须要指定 --exec-id 参数,参数唯一)
ctr t exec --exec-id 0 -t test sh
# 暂停任务(说明:暂停后容器状态变成了 PAUSED )
ctr t pause test
# 恢复任务
ctr t resume test
# 杀死任务
ctr t kill test
# 删除任务(和 docker 相同,参数 -f 可强制删除)
ctr t rm test
# 命名空间
# 查看明明空间列表
ctr ns ls
K8s 中 containerd 常用命令
powershell
# 查看镜像列表
ctr -n k8s.io images list
# 拉取镜像
ctr -n k8s.io images pull docker.io/library/busybox:1.36.1
# 推送镜像
ctr -n k8s.io images push -plain-http docker.io/library/busybox:1.36.1
# 批量删除
ctr -n k8s.io images delete $(ctr -n k8s.io images list -q | grep library)
# 删除 library 相关镜像
ctr -n k8s.io i ls | grep library| awk '{print $1}' | xargs -i ctr -n k8s.io i remove {}
总结
大部分命令和 Docker 能对应上,如果知道如何使用 Docker ,那么 containerd 比较容易上手!
不过 containerd 多了一个命名空间(namespace)的概念而已,拿来区分 containerd 的默认命名空间 default 、Docker 的默认命名空间 moby 、 K8s 的默认命名空间 k8s.io 及其他命名空间!