相关版本号:

服务   版本号
containerd1.6.26
crictl

0.1.0

Rocky Linuxrelease 8.9 (Green Obsidian)

使用crictl pull(crictl是容器 的命令行工具)

方法1:使用config.toml文件

1.修改config.toml文件

 路径/etc/containerd/config.toml(配置文件可从附件下载)

       [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
           [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
             endpoint = ["https://registry-1.docker.io"]
           [plugins."io.containerd.grpc.v1.cri".registry.mirrors."192.168.8.8:8888"]
             endpoint = ["http://192.168.8.8:8888"]

       [plugins."io.containerd.grpc.v1.cri".registry.configs]
           [plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.8.8:8888".tls]
             insecure_skip_verify = true
           [plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.8.8:8888".auth]
             username = "admin"
             password = "3213213"

2.重启containerd

systemctl restart containerd

3.查看配置有无生效

containerd config dump                             #查看当前生效之后的配置

crictl pull 192.168.8.8:8888/library/guestbook:v2    #验证

方法2:config.toml里引用/etc/containerd/certs.d下的配置文件

1.在config.toml里引用/etc/containerd/certs.d下的配置文件

2.创建配置文件及其目录

mkdir -p /etc/containerd/certs.d/192.168.8.8:8888

cd /etc/containerd/certs.d/192.168.8.8:8888
vim hosts.toml

server = "http://192.168.8.8:8888"
[host."http://192.168.8.8:8888"]
  capabilities = ["pull", "resolve", "push"]
  skip_verify = true

3.重启containerd

systemctl restart containerd

4.查看配置有无生效

containerd config dump                             #查看当前生效之后的配置

crictl pull 192.168.8.8:8888/library/guestbook:v2    #验证


使用ctr pull(ctr是containerd 的命令行工具)

k8s容器运行时使用containerd,则是通过ctr拉取的镜像,只能提前在node节点上使用命令下载好镜像

在上面的配置之后还需要额外配置,ctr 不读取/etc/containerd/config.toml配置文件。 此配置由 CRI 使用,这意味着 crictl 将使用它

方法1:加上--plain-http

--plain-http标志的作用是允许使用普通的 HTTP 连接来与容器注册表进行通信。这意味着当您使用ctr拉取或推送镜像时,如果您的镜像仓库配置为不使用 HTTPS 加密

ctr -n k8s.io i pull 192.168.8.8:8888/library/guestbook:v1 --plain-http

方法2:使用--hosts-dir指定自定义的主机配置文件目录

/etc/containerd/certs.d下配置文件的配置参考上面的配置

ctr -n k8s.io i pull --hosts-dir "/etc/containerd/certs.d" 192.168.8.8:8888/library/guestbook:v1


crictl和ctr区别

crictl 和 ctr是两个不同的命令行工具,它们用于与容器运行时交互,但它们的用途和上下文有所不同。

- crictl: 这是一个命令行界面,专门用于与遵循容器运行时接口(CRI)的容器运行时交互。CRI 是 Kubernetes 用来与容器运行时(如 containerd 和 cri-o)交互的标准接口。crictl 主要用于开发和调试 Kubernetes Pod 和容器。

- ctr: 这是 containerd 的原生命令行工具。它提供了直接与 containerd 容器运行时交互的能力,包括容器的管理、镜像的拉取和推送、任务的执行等。ctr更适合于底层的容器操作和调试工作。

总的来说,crictl 面向 Kubernetes 环境,而 ctr 是面向 containerd 的更通用工具。


Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐