docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker私有仓库的镜像删除

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

作者: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:*"

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"

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"

总结

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

您可能感兴趣的文章:
阅读全文