使用 podman 推送数据到私有仓库的 3 个问题记录

写在前面,什么是 podman

因为公司不让用 docker,所以可以理解为 podman 是 docker 的替代。

Podman 设计上是兼容 Docker 的,这意味着你可以用 Podman 替代 Docker,而不需要对现有的Docker环境或脚本做太多改变。


场景:推送镜像到私有仓库,报了如下三个错误,记录一下

podman push xxxxxxx
  • 问题 1: Error: trying to reuse blob sha256:e0781bc8667fb5ebf954df4ae52997f6f5568ec9f07e21e5db7c9d324ed41e1f at destination: pinging container registry harbor.xxxx.xxxx.xxxx.xxxx: Get "https://harbor.xxxx.xxxx.xxxx.xxxx/v2/": tls: failed to verify certificate: x509: certificate relies on legacy Common Name field, use SANs instead
  • 问题 1 的解决方案:增加参数 --tls-verify=false 解决了该问题

  • 问题 2:Error: writing blob: initiating layer upload to /v2/xxxx/blobs/uploads/ in harbor.xxxx.xxxx.xxxx.xxxx: requested access to the resource is denied

  • 问题 2 的解决方案:需要先登录

    podman login harbor.xxxx.xxxx.xxx.xxxx -u xxxxxxxx -p xxxxxxxx
    

  • 问题 3:Error: writing manifest: uploading manifest 7.4.0 to harbor.xxxx.xxxx.xxxx.xxxx/xxxxxx: manifest invalid
  • 问题 3 的解决方案:增加参数 --format v2s2 解决了该问题

--format v2s2 的解释

问题 3 中提到的错误是关于上传容器镜像到 Harbor 仓库时的问题。错误信息提示上传的镜像清单(manifest)无效。解决方法是增加 --format v2s2 参数。

  • format 参数的选择:Docker 镜像格式通常有两种选择,分别是 v2s1 和 v2s2:
    • v2s1(Schema 1):是 Docker Registry HTTP API V2 的早期版本,已经不推荐使用。
    • v2s2(Schema 2):是推荐的现代格式,提供了更多的特性和改进。
      这两种格式的含义:

v2s1(Schema 1):它是 Docker 镜像分发的第一个版本,支持签名,但缺乏其他一些功能,例如内容寻址和多平台镜像支持。
v2s2(Schema 2):这个版本添加了一些重要的功能,例如内容寻址,这样可以通过校验和来验证镜像的完整性,同时支持多架构镜像和清单列表。

为何会报错:

报错可能是因为 Harbor 仓库配置为只接受 Schema 2 的镜像格式,而尝试上传的镜像可能是旧的 Schema 1 格式,或者镜像清单文件有其他问题。通过明确指定 --format v2s2,确保上传的是兼容的镜像格式,从而解决了问题。

最终的命令

podman push xxxxxxx --tls-verify=false --format v2s2
对于希望深入学习如何搭建和使用Docker私有仓库Harbor的用户来说,《一步步搭建Docker私有仓库Harbor:详细教程与实战部署》是您不可或缺的资源。通过它,您将学习到Harbor的基础知识及其在生产环境中的应用。 参考资源链接:[一步步搭建Docker私有仓库Harbor:详细教程与实战部署](https://wenku.csdn.net/doc/7i5w73gnfz?spm=1055.2569.3001.10343) 首先,确保您的机器上已安装有最新版本的Docker,这是使用Harbor的前提。接着,根据Harbor的官方文档,从其GitHub页面下载所需的安装包。一般情况下,您可以使用wget命令来下载Harbor的安装文件。 下载完成后,解压缩安装包到您希望存放Harbor的目录,然后根据您的需求修改配置文件harbor.yml。配置文件中包含了关键信息,如主机名、端口、管理员密码和存储路径等,这些都是Harbor运行的基础设置。 之后,您可以使用docker-compose来管理Harbor的容器化部署。首先确保安装了docker-compose,然后运行安装脚本,并检查docker-compose进程确保Harbor已经成功启动。此时,您可以通过浏览器访问Harbor的Web界面,完成管理员账号的登录和初始设置。 创建项目是使用Harbor的一个重要步骤,这涉及到后续镜像的推送和拉取操作。在Harbor界面中创建项目后,您需要配置Docker客户端,以便能够登录到Harbor。使用docker login命令,输入用户名和密码来完成登录。 现在,您可以开始推送和拉取镜像了。推送镜像到Harbor之前,需要给本地的镜像打上标签,格式通常为IP:端口/项目名/镜像名:标签。例如:`docker tag alpine:latest ***.***.*.***/myproject/alpine:v1.0`。之后,使用`docker push`命令将镜像推送到Harbor中。 反之,当您需要从Harbor拉取镜像到本地时,可以使用`docker pull`命令,指定Harbor中相应的镜像名和标签。这样,您就可以在本地使用这些镜像了。 配置和使用Docker私有仓库Harbor,不仅涉及到了容器镜像的管理,还关乎到整个开发和部署流程的安全性和效率。通过《一步步搭建Docker私有仓库Harbor:详细教程与实战部署》的指导,您可以一步步掌握Harbor的搭建和使用,为您的团队提供一个强大而可靠的镜像管理解决方案。 参考资源链接:[一步步搭建Docker私有仓库Harbor:详细教程与实战部署](https://wenku.csdn.net/doc/7i5w73gnfz?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值