docker和containerd从TLS harbor拉取镜像

server/2025/2/28 6:59:31/

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

dockercontainerdHarbor_TLS_2">一、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去进行拉取

1docker拉取镜像
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。


http://www.ppmy.cn/server/171241.html

相关文章

DeepSeek学习教程 从入门到精通pdf下载:快速上手 DeepSeek

下载链接:DeepSeek从入门到精通(清华大学).pdf 链接: https://pan.baidu.com/s/1Ym0-_x9CrFHFld9UiOdA5A 提取码: 2ebc 一、DeepSeek 简介 DeepSeek 是一款由中国团队开发的高性能大语言模型,具备强大的推理能力和对中文的深刻理解。它广泛应用于智能办…

【线性代数】3向量

1.线性相关性 1.1.三个概念 向量的线性表示:一个向量用其他向量乘常数再相加表示出来。 举一个例子,我们用分别乘上常数和,让他们相加等于,,,这个就叫可以由线性表示。 考试中只写和是不行的,我们要把他们求出来。方法就是把具体的向量写出来,再用和向量中的元素分别…

es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗?

Elasticsearch 写入数据的工作原理 1. 写入流程概述 当客户端向 Elasticsearch 发送写入请求时,会经历以下步骤: 客户端选择一个节点 作为 coordinating node(协调节点),发送请求。协调节点对文档进行路由&#xff…

Python爬虫---中国大学MOOC爬取数据(文中有数据集)

1、内容简介 本文为大二在校学生所做,内容为爬取中国大学Mooc网站的课程分类数据、课程数据、评论数据。数据集大佬们需要拿走。主要是希望大佬们能指正代码问题。 2、数据集 课程评论数据集,343525条(包括评论id、评论时间、发送评论用户…

Service 响应断断续续问题解决

Service 响应断断续续问题解决 问题描述:使用服务部署了一个任务,但是访问服务的 ClusterIP 不间断的得不到响应,但是这种直接访问任务的 pod IP,无这种情况 ​ 查看服务的 endpoints,会发现,服务的 endpo…

免费使用 DeepSeek API 教程及资源汇总

免费使用 DeepSeek API 教程及资源汇总 一、DeepSeek API 资源汇总1.1 火山引擎1.2 百度千帆1.3 阿里百炼1.4 腾讯云 二、其他平台2.1 华为云2.2 硅基流动 三、总结 DeepSeek-R1 作为 2025 年初发布的推理大模型,凭借其卓越的逻辑推理能力和成本优势,迅速…

【Excel】 Power Query抓取多页数据导入到Excel

抓取多页数据想必大多数人都会,只要会点编程技项的人都不会是难事儿。那么,如果只是单纯的利用Excel软件,我还真的没弄过。昨天,我就因为这个在网上找了好久发好久。 1、在数据-》新建查询-》从其他源-》自网站 ,如图 …

Python - Python连接数据库

Python的标准数据库接口为:Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个实现库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范&…