如何让containerd从搭建的私有http harbor仓库拉取镜像
配置containerd从http harbor仓库拉取镜像
·
相关版本号:
服务 | 版本号 |
containerd | 1.6.26 |
crictl | 0.1.0 |
Rocky Linux | release 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 的更通用工具。
更多推荐
已为社区贡献1条内容
所有评论(0)