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.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"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值