docker私有仓库的镜像删除方式

 更新时间:2025年02月25日 09:44:42   作者:wanmei002  
该文章介绍了如何使用Docker私有仓库删除镜像的步骤,包括获取Token、请求镜像列表和删除镜像的具体操作,同时,还解决了在删除镜像时遇到的MANIFEST_UNKNOWN错误,并提供了相应的解决办法

docker私有仓库的镜像删除

获取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.docker.distribution.manifest.v2+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"

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker screen命令的使用

    docker screen命令的使用

    本文主要介绍了docker screen命令的使用,Screen命令则提供了强大的多会话管理功能,让我们可以实时监控和操作容器,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Docker创建openresty容器的实现步骤

    Docker创建openresty容器的实现步骤

    OpenResty可以用来构建高性能的Web应用和服务,本文主要介绍了Docker创建openresty容器的实现步骤,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • Docker上部署mysql8主从复制的实现

    Docker上部署mysql8主从复制的实现

    本文主要介绍了Docker上部署mysql8主从复制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • docker 安装ElasticSearch 6.x的教程详解

    docker 安装ElasticSearch 6.x的教程详解

    这篇文章主要介绍了docker 安装ElasticSearch 6.x的教程,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • 删除docker里建立容器的操作方法

    删除docker里建立容器的操作方法

    在本篇文章里小编给大家分享了一篇关于删除docker里建立容器的操作方法,需要的朋友们可以学习下。
    2020-03-03
  • Linux安装Docker详细教程

    Linux安装Docker详细教程

    这篇文章介绍了Linux安装Docker的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • docker私有仓库harbor搭建过程

    docker私有仓库harbor搭建过程

    这篇文章主要介绍了docker私有仓库harbor搭建过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Docker mysql+nacos单机部署的实现步骤

    Docker mysql+nacos单机部署的实现步骤

    本文主要介绍了Docker mysql+nacos单机部署的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Docker如何部署前端项目

    Docker如何部署前端项目

    这篇文章主要介绍了Docker如何部署前端项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Docker Nginx Log 三者的处理详解

    Docker Nginx Log 三者的处理详解

    这篇文章主要介绍了Docker Nginx Log 三者的处理详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论