ctr 命令

常用脚本


#!/bin/bash
set -x

images="
openyurt/yurthub:v0.6.1
"

r_host="docker.io"
l_host="[harbor.internal.com]"
ctr="ctr -n k8s.io"

tags=" "

for image in $images;do

  # download
  $ctr i rm $r_host/$image

  #$ctr i pull --all-platforms -u user:password $r_host/$image
  $ctr i pull --all-platforms -u user:password $r_host/$image

  # $ctr i rm $l_host/$image
  $ctr i tag $r_host/$image $l_host/devops-public/$image

  $ctr i push -u 'user:password' $l_host/devops-public/$image

  # tags="$l_host/$image $tags"

done

# $ctr i export ctr-image.HuanBaoYuan.tar $tags

#!/bin/bash
# docker save nginx:1 > nginx.tar 必须是tar文件

images="
platform-test/platform-system:2.1.2.10
platform-test/platform-auth:2.1.2.2
platform-test/cloud-gateway:1.1.4
platform/system-front:1.1.5-sass
"

r_host="[harbor.internal.com]"
l_host="10.229.94.176:5000"
ctr="ctr -n k8s.io"

for image in $images;do

  $ctr i pull -u user:password $r_host/$image
  $ctr i tag $r_host/$image $l_host/$image
  $ctr i push $l_host/$image
  $ctr rmi $r_host/$image

done

使用用户名和密码下载镜像

[root@RJYF-T-042 ~]# ctr -n k8s.io i pull -u user:password harbor.internal.com/platform-test/platform-system:2.1.2.10

创建并运行容器

[root@RJYF-T-042 ~]# ctr run --rm -t harbor.internal.com/busybox/busybox:latest test-name sh
[root@RJYF-T-042 ~]# ctr run --rm -t harbor.internal.com/ubuntu/ubuntu:16.04 test-ubuntu bash

查看本地镜像

[root@RJYF-T-042 ~]# ctr i ls
[root@RJYF-T-042 ~]# ctr i ls -q

拉取远程镜像到本地

[root@RJYF-T-042 ~]# ctr i pull docker.io/library/nginx:alpine
[root@RJYF-T-042 ~]# ctr i pull --all-platforms docker.io/library/nginx:alpine
[root@RJYF-T-042 ~]# ctr i pull --platform=arm64 docker.io/library/nginx:alpine
[root@RJYF-T-042 ~]# ctr i pull --platform=linux/amd64 docker.io/library/nginx:alpine

检查镜像

[root@RJYF-T-042 ~]# ctr i check
[root@RJYF-T-042 ~]# ctr i check -q

重新标记镜像tag

[root@RJYF-T-042 ~]# ctr i tag docker.io/library/nginx:1.18 harbor.internal.com/nginx/nginx:1.18

删除镜像

[root@RJYF-T-042 ~]# ctr i rm docker.io/library/nginx:1.18

导出镜像。导出的是arm的镜像,那么只能在arm的机器上导入。

[root@RJYF-T-042 ~]# ctr i export --platform=linux/arm64 nginx_arm64_images.tar.gz docker.io/library/nginx:alpine # ARM
[root@RJYF-T-042 ~]# ctr i export --platform=linux/amd64 nginx_amd64_images.tar.gz docker.io/library/nginx:alpine # AMD
[root@RJYF-T-042 ~]# ctr i export --all-platforms nginx.tar.gz docker.io/library/nginx:alpine # 当出现错误时,使用全平台下载

导入镜像

[root@RJYF-T-042 ~]# ctr i import nginx.tar.gz
[root@RJYF-T-042 ~]# ctr i ls -q

push 也要加 –platform=linux/amd64

清理无用镜像

crictl rmi –prune

[root@RJYF-T-042 ~]# ctr -n k8s.io i push --hosts-dir /etc/containerd/certs.d/ registry.local:5000/kubernetesui/dashboard:v2.7.0

查看名称空间

# ctr ns ls

在指定名称空间拉取镜像

# ctr -n k8s.io images pull docker.io/library/redis:latest

列举镜像

# ctr -n k8s.io i ls -q