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

docker 私有仓库的镜像删除

目录

        • 获取token
          • 1. base64 用户名 密码
          • 2. 先请求要请求的接口
          • 3. 请求接口 auth
          • 4. 拿着 token, 去请求接口
        • 请求 tag 列表接口
          • 1. 去请求token
          • 2. 拿着token去请求 镜像 tag 列表
        • 删除镜像
          • 1. 先获取镜像 tag 的 sha256
          • 2. 删除镜像
      • 错误: `{"errors":[{"code":"MANIFEST_UNKNOWN","message":"OCI index found, but accept header does not support OCI indexes"}]}` 解决办法

获取token
1. base64 用户名 密码
echo -n <你的用户名>:<你的密码> | base64
# 得到的字符串是: dXNlcm5tYWU6cGFzc3dvcmQ=
2. 先请求要请求的接口

比如我向获取所有镜像列表接口 http://127.0.0.1:5000/v2/_catalog

curl -i -X GET 'http://127.0.0.1:5000/v2/_catalog'

返回的 header 头里有 Www-Authenticate: Bearer realm="https://127.0.0.1:4000/auth",service="Registry",scope="registry:catalog:*"

  • realm: 需要取 这个接口里获取 token
  • service, scope 是查询参数
3. 请求接口 auth

以上面的 Www-Authenticate 信息为例子

# url 最好用 引号括住
curl -i -H'Authorization: Basic dXNlcm5tYWU6cGFzc3dvcmQ=' -X GET 'http://127.0.0.1:4000/auth?service=Registry&scope=registry:catalog:*'
# 返回的数据如下
{"access_token": "aaaa.bbbb.cccc", "token": "aaaa.bbbb.cccc"}
# access_token 跟 token 字段里的值是一样的
4. 拿着 token, 去请求接口
curl  -i -H"Authorization: Bearer aaaa.bbbb.cccc"  'http://127.0.0.1:5000/v2/_catalog'

# 返回结果
{"registry": ["aaa/bbbb"]}
请求 tag 列表接口

aaa/bbbb 是镜像

1. 去请求token
# 注意查询参数里的  scope
curl -i -H'Authorization: Basic dXNlcm5tYWU6cGFzc3dvcmQ=' -X GET 'http://127.0.0.1:4000/auth?service=Registry&scope=registry:aaa/bbbb:pull'

每次请求接口的 scope 不一样 都需要去请求一次 token 接口

2. 拿着token去请求 镜像 tag 列表
curl -i  -H "Authorization:  Bearer dddd.eeee.ffff" 'http://127.0.0.1:5000/v2/aaa/bbbb/tags/list'

{"name":"aaa/bbbb","tags":["v1.0.2","v1.0.3"]}
删除镜像
1. 先获取镜像 tag 的 sha256
curl -i  -H "Authorization: Bearer aaa.bbb.ccc" -H "Accept: application/vnd.oci.image.manifest.v1+json" -H "Accept: application/vnd.oci.image.index.v1+json"  'http://127.0.0.1:5000/v2/aaa/bbbb/manifests/v1.0.2'
# 返回值
HTTP/1.1 200 OK
Content-Length: 529
Content-Type: application/vnd.docker.distribution.manifest.v2+json
Docker-Content-Digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
Docker-Distribution-Api-Version: registry/2.0
Etag: "sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc"

注意 header 头都需要,必需加全
header 头里的 sha256 在删除的时候需要

2. 删除镜像
curl -i -XDELETE -H "Authorization:  Bearer aaaa.bbbbb.cccc"   'http://127.0.0.1:5000/v2/aaa/bbbb/manifests/sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc'
# 返回 202 状态码,表示成功了

错误: {"errors":[{"code":"MANIFEST_UNKNOWN","message":"OCI index found, but accept header does not support OCI indexes"}]} 解决办法

解决办法: curl 请求的时候加上 header头: -H "Accept: application/vnd.oci.image.manifest.v1+json" -H "Accept: application/vnd.oci.image.index.v1+json"


http://www.kler.cn/news/327719.html

相关文章:

  • 基于SSM的O20兼职系统的设计与实现(源码+定制+文档)
  • Windows下安装 LLama-Factory 保姆级教程
  • leetcode:字符串相加
  • leetcode每日一题day19(24.9.29)——买票需要的时间
  • 为啥数据需转换成tensor才能参与后续建模训练
  • Kafka学习笔记(一)Linux环境基于Zookeeper搭建Kafka集群、Kafka的架构
  • 生信名词|脱靶效应|表型药物发现|VAE|批次效应|基于表型|自监督学习
  • pdf怎么编辑修改内容?详细介绍6款pdf编辑器功能
  • 解决docker一直出现“=> ERROR [internal] load metadata for docker.io/library/xxx“的问题
  • 基于SpringBoot+Vue的服装销售管理系统
  • 技术周刊 | Express.js 5.0、Meta Connect 2024、字节发布两款视频生成大模型、OpenAI CEO 发长文预测超级人工智能
  • qlora原理
  • 基于SpringBoot+Vue的留学信息推荐系统
  • UNI-APP_iOS开发技巧之:跳转到TestFlight或者App Store
  • 鸿蒙NEXT开发-ArkUI(基于最新api12稳定版)
  • 城市轨道交通网络客流大数据可视化分析系统----以某市交通网络客流数据为例
  • 负载均衡架构解说
  • 【Vue】vue2项目打包后部署刷新404,配置publicPath ./ 不生效问题
  • 极狐GitLab 17.4 升级指南
  • 小米2025届软件开发工程师(C/C++/Java)(编程题AK)
  • 丹摩智算平台部署 Llama 3.1:实践与体验
  • linux文件编程_进程
  • 2024新淘宝镜像地址下载【vue-cli】
  • 浅析人脸活体检测技术的实现过程及其应用领域
  • MongoDB 用户管理
  • docker 部署minio
  • Webpack 打包后文件过大,如何优化?
  • Maven超详细教程(三):Maven依赖查找顺序
  • PHP中的时间和日期详解
  • 无人机之数据提取篇