containerd命令行使用
一、基础使用
1、crictl、ctr用法
# 备注:k8s_1.25.0.tar.gz这个文件如何来的?
这个文件把安装k8s需要的镜像都集成好了,这个是我第一次安装1.25.0这个版本,获取到对应的镜像,通过ctr images export 这个命令把镜像输出到k8s_1.25.0.tar.gz文件,如果大家安装其他版本,那就不需要实现解压镜像,可以默认从网络拉取镜像即可。
ctr是containerd自带的工具,有命名空间的概念,若是k8s相关的镜像,都默认在k8s.io这个命名空间,所以导入镜像时需要指定命令空间为k8s.io
# 使用ctr命令指定命名空间导入镜像
ctr -n=k8s.io images import k8s_1.25.0.tar.gz
# 查看镜像,可以看到可以查询到了
crictl images
# 注意-n不能放在命令最后面,下面几行查看的镜像是一样的
ctr -n=k8s.io image ls
ctr -n k8s.io image ls
# crictl 没有-n参数,操作都在`k8s.io`命名空间下。
crictl image ls
crictl images
# crictl image list = ctr -n=k8s.io image list
# crictl image ls = ctr -n=k8s.io image ls
# crictl images = ctr -n=k8s.io image list
# crictl images = ctr -n=k8s.io image ls
# 使用ctr命令指定命名空间导入镜像
ctr -n=k8s.io image import dashboard.tar
#查看镜像,可以看到可以查询到了
crictl images
| 命令 |
docker |
ctr(containerd) |
crictl(kubernetes) |
| 查看运行的容器 |
docker ps |
ctr task ls/ctr container ls |
crictl ps |
| 查看镜像 |
docker images |
ctr image ls |
crictl images |
| 查看容器日志 |
docker logs |
无 |
crictl logs |
| 查看容器数据信息 |
docker inspect |
ctr container info |
crictl inspect |
| 查看容器资源 |
docker stats |
无 |
crictl stats |
| 启动/关闭已有的容器 |
docker start/stop |
ctr task start/kill |
crictl start/stop |
| 运行一个新的容器 |
docker run |
ctr run |
无(最小单元为pod) |
| 打标签 |
docker tag |
ctr image tag |
无 |
| 创建一个新的容器 |
docker create |
ctr container create |
crictl create |
| 导入镜像 |
docker load |
ctr image import |
无 |
| 导出镜像 |
docker save |
ctr image export |
无 |
| 删除容器 |
docker rm |
ctr container rm |
crictl rm |
| 删除镜像 |
docker rmi |
ctr image rm |
crictl rmi |
| 拉取镜像 |
docker pull |
ctr image pull |
ctictl pull |
| 推送镜像 |
docker push |
ctr image push |
无 |
| 登录或在容器内部执行命令 |
docker exec |
无 |
crictl exec |
| 清空不用的容器 |
docker image prune |
无 |
crictl rmi --prune |
2、nerdctl安装及使用
# 安装nerdctl
wget https://github.com/containerd/nerdctl/releases/download/v1.6.2/nerdctl-full-1.6.2-linux-amd64.tar.gz
mv nerdctl-full-1.6.2-linux-amd64.tar.gz /usr/local/
cd /usr/local/
tar zxvf nerdctl-full-1.6.2-linux-amd64.tar.gz
# 安装 buildkit 工具(配置这个之后才能使用 `nerdctl build`)
# 配置 systemd 管理
cat > /etc/systemd/system/buildkit.socket <<'EOF'
[Unit]
Description=BuildKit
Documentation=https://github.com/moby/buildkit
[Socket]
ListenStream=%t/buildkit/buildkitd.sock
[Install]
WantedBy=sockets.target
EOF
cat > /etc/systemd/system/buildkit.service <<'EOF'
[Unit]
Description=BuildKit
Requires=buildkit.socket
After=buildkit.socketDocumentation=https://github.com/moby/buildkit
[Service]
ExecStart=/usr/local/bin/buildkitd --oci-worker=false --containerd-worker=true
[Install]
WantedBy=multi-user.target
EOF
# 启动并设置开启自启并检查
systemctl daemon-reload && systemctl enable --now buildkit && systemctl status buildkit
# 设置默认名称空间
[root@master1 ~]# mkdir /etc/nerdctl
[root@master1 ~]# cat > /etc/nerdctl/nerdctl.toml << EOF
namespace = "k8s.io"
EOF
# 登入
nerdctl --insecure-registry login --username "admin" --password Harbor12345 harbor.lab.home:443
# 登出
nerdctl logout
# 推送到Harbor
nerdctl --insecure-registry --namespace=k8s.io push myharbor-minio.com/bigdata/nginx:nerctl
--insecure-registry 跳过https证书检查
ctr --namespace=k8s.io images push myharbor-minio.com/bigdata/nginx:nerctl --skip-verify --user admin:Harbor12345
评论区