docker私有倉庫的鏡像刪除方式
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: 需要取 這個(gè)接口里獲取 token
- service, scope 是查詢參數(shù)
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:*' # 返回的數(shù)據(jù)如下 {"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' # 返回結(jié)果 {"registry": ["aaa/bbbb"]}
請求 tag 列表接口
aaa/bbbb 是鏡像
1. 去請求token
# 注意查詢參數(shù)里的 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 在刪除的時(shí)候需要
2. 刪除鏡像
curl -i -XDELETE -H "Authorization: Bearer aaaa.bbbbb.cccc" 'http://127.0.0.1:5000/v2/aaa/bbbb/manifests/sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc' # 返回 202 狀態(tài)碼,表示成功了
- 錯誤:
{"errors":[{"code":"MANIFEST_UNKNOWN","message":"OCI index found, but accept header does not support OCI indexes"}]}
- 解決辦法:
curl 請求的時(shí)候加上 header頭:
-H "Accept: application/vnd.oci.image.manifest.v1+json" -H "Accept: application/vnd.oci.image.index.v1+json"
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker創(chuàng)建openresty容器的實(shí)現(xiàn)步驟
OpenResty可以用來構(gòu)建高性能的Web應(yīng)用和服務(wù),本文主要介紹了Docker創(chuàng)建openresty容器的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03Docker上部署mysql8主從復(fù)制的實(shí)現(xiàn)
本文主要介紹了Docker上部署mysql8主從復(fù)制的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08docker 安裝ElasticSearch 6.x的教程詳解
這篇文章主要介紹了docker 安裝ElasticSearch 6.x的教程,非常不錯,具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-04-04Docker mysql+nacos單機(jī)部署的實(shí)現(xiàn)步驟
本文主要介紹了Docker mysql+nacos單機(jī)部署的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08