当前位置: 首页 > news >正文

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。

相关文章:

  • AI学习第六天-python的基础使用-趣味图形
  • 基于Linux系统的物联网智能终端
  • 文字描边实现内黄外绿效果
  • 如何正确理解mAP、精度、召回率等概念
  • 北京大学DeepSeek提示词工程与落地场景(PDF无套路免费下载)
  • 考研出分24小时,人类精神状态图鉴
  • 【Mac电脑本地部署Deepseek-r1:详细教程与Openwebui配置指南】
  • 本地部署SenseVoice(包括离线设备操作)
  • Golang——内存(内存管理、内存逃逸、垃圾回收 (GC) 机制)
  • 什么是标记 PDF(Tagged PDF)?
  • Ollama下载安装+本地部署DeepSeek+UI可视化+搭建个人知识库——详解!(Windows版本)
  • 京东-零售-数据研发面经【附答案】
  • 选开源CMS建站系统时,插件越多越好吗?
  • 0x02 js、Vue、Ajax
  • 家用可燃气体探测器——家庭燃气安全的坚实防线
  • MongoDB—(一主、一从、一仲裁)副本集搭建
  • 利用node.js搭配express框架写后端接口(一)
  • ERP、BPM适合哪些类型的企业
  • PVE 配置显卡直通
  • XSS-labs靶场通关
  • 复旦大学艺术馆开馆:以当代视角再看文科文脉
  • 中国田径巡回赛西安站完赛:男子跳远石雨豪夺冠
  • 俄乌刚谈完美国便筹划与俄乌领导人通话,目的几何?
  • 3月中国减持189亿美元美债、持仓规模降至第三,英国升至第二
  • 高途一季度净利润同比增长1108%: “与吴彦祖一起学英语”短时间内就实现了盈利
  • 美国务卿鲁比奥抵达会场,将参加俄乌会谈