欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > docker和containerd从TLS harbor拉取镜像

docker和containerd从TLS harbor拉取镜像

2025/2/28 9:45:44 来源:https://blog.csdn.net/sj1163739403/article/details/145895472  浏览:    关键词:docker和containerd从TLS harbor拉取镜像

私有镜像仓库配置了自签名证书,https访问,好处是不需要处理免费证书和付费证书带来的证书文件变更,证书文件变更后需要重启服务,自签名证书需要将一套客户端证书存放在/etc/docker/cert.d目录下,或者/etc/containerd/certs.d下

一、docker和containerd配置Harbor TLS

docker和containerd都放在certs.d目录下

/etc/docker/certs.d/
├── harbor.devops.baga.life
│ ├── ca.crt
│ ├── harbor.devops.baga.life.cert
│ └──harbor.devops.baga.life.key

docker可以去login测试harbor的登录

docker login harbor.devops.baga.life -u 'robot$robot' -p 'xxxxxxx'

containerd不能直接登录harbor仓库,通过账号密码访问,配置在/etc/containerd/config.toml下

    [plugins."io.containerd.grpc.v1.cri".registry]config_path = "/etc/containerd/certs.d"[plugins."io.containerd.grpc.v1.cri".registry.configs][plugins."io.containerd.grpc.v1.cri".registry.configs."sealos.hub:5000".auth]username = "admin"password = "passw0rd"[plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.devops.baga.life".auth]username = "robot$robot"password = "xxxxxxx"

配置完成以后可以重启一下docker或者containerd

二、拉取测试

用ctr操作推送失败了,换个思路,我先在其他机器上用docker拉取镜像,打tag以后推送至镜像仓库。最后让ctr去进行拉取

1、docker拉取镜像
docker pull ubuntu
2、打tag
docker tag ubuntu:latest harbor.devops.baga.life/base/ubuntu:tmp
3、推送镜像
$ docker push harbor.devops.baga.life/base/ubuntu:tmp
The push refers to repository [harbor.devops.baga.life/base/ubuntu]
4b7c01ed0534: Pushed 
tmp: digest: sha256:104f82606ea66da00e6cfecbcccdb53ba4238a7057bed809f004107ad8e90c97 size: 529docker push 只会推送本地和远程不同的层,如果 harbor.devops.baga.life 已经有相同的镜像层,那么 Docker 只会推送元数据,实际数据不会重复上传。•	size: 529 代表的是 manifest 文件的大小,而不是整个镜像的大小。
4、拉取镜像
crictl pull harbor.devops.baga.life/base/ubuntu:tmp

三、不同点

首先是docker命令和ctr展示不同,containerd用了命名空间,默认default,但很多镜像存储在k8s.io中
可以通过crictl命令操作containerd,和docker操作方式类似,但无法给镜像打tag和推送,只能拉取

镜像大小不同

# 这是docker镜像大小
redis                                 latest    43724892d6db     7 weeks ago   117MB
# 这是containerd镜像大小
harbor.devops.baga.life/base/redis      tmp        43724892d6db0       45.9MB

可以看到镜像id相同,但是大小差了很多
差异主要原因如下:
1、Docker和CRI(容器运行时接口)报告大小的方式不同:

  • Docker通常显示镜像的"虚拟大小"(所有层的总和)
  • crictl/containerd通常显示镜像的"压缩大小"或者仅特定层的大小

2、共享层的计算方式:Docker可能将已有的共享层计入总大小,而crictl可能只计算唯一层。
3、虚拟大小与实际占用空间:117MB可能是镜像的"虚拟大小",而实际存储空间占用更小,约45.9MB。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词