docker registry2私有倉庫創(chuàng)建及刪除

1. registry創(chuàng)建

  • docker官方提供一個(gè)搭建私有倉庫的鏡像registry,將鏡像pull下來,端口設(shè)置5000。
docker pull registry:2
  • registry服務(wù)器默認(rèn)會將上傳的鏡像保存在容器中的/var/lib/registry,我們將主機(jī)的/home/xxx/docker/opt/registry目錄掛載到該目錄。
docker run -d -v /home/xxx/docker/opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
  • 瀏覽器訪問http://127.0.0.1:5000/v2, 出現(xiàn)下面情況說明registry運(yùn)行正常。
    image.png
  • 將本地的鏡像push到registry中,采用busybox進(jìn)行測試。
docker pull busybox
docker tag busybox localhost:5000/busybox:latest
docker push localhost:5000/busybox:latest

通過curl驗(yàn)證一下

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

出現(xiàn)如下結(jié)果:

{"repositories":["busybox"]}

2. registry 中的鏡像刪除

  • 進(jìn)入registry
docker exec -it registry sh
  • 查看config.yml, 在配置文件中storage配置中增加delete配置項(xiàng)。
vi /etc/docker/registry/config.yml
version: 0.1
log:
  fields:
    service: registry
storage:
  delete:
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
  • 查看當(dāng)前倉庫數(shù)據(jù)的大小
du -sch /var/lib/registry
892.0K  /var/lib/registry
892.0K  total

  • 刪除鏡像的api如下:
DELETE /v2/<name>/manifests/<reference>

name: 鏡像名稱
reference: 鏡像對應(yīng)的sha256值

  • 獲取鏡像信息, 如何不加-Idigest的值會出錯(cuò)。
    ** 加-I的情況如下:
curl --header "Accept: application/vnd.docker.distribution.manifest.v2+json" -I -X GET http://127.0.0.1:5000/v2/busybox/manifests/latest
HTTP/1.1 200 OK
Content-Length: 527
Content-Type: application/vnd.docker.distribution.manifest.v2+json
Docker-Content-Digest: sha256:ee44b399df993016003bf5466bd3eeb221305e9d0fa831606bc7902d149c775b
Docker-Distribution-Api-Version: registry/2.0
Etag: "sha256:ee44b399df993016003bf5466bd3eeb221305e9d0fa831606bc7902d149c775b"
X-Content-Type-Options: nosniff
Date: Tue, 24 Nov 2020 07:52:55 GMT

** 不加-I情況如下:

curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -X GET http://127.0.0.1:5000/v2/busybox/manifests/latest
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
   "config": {
      "mediaType": "application/vnd.docker.container.image.v1+json",
      "size": 1457,
      "digest": "sha256:dc3bacd8b5ea796cea5d6070c8f145df9076f26a6bc1c8981fd5b176d37de843"
   },
   "layers": [
      {
         "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
         "size": 764624,
         "digest": "sha256:5f5dd3e95e9fd44603cbb8968144999b730545267ce74d9b442f8f7f7827f776"
      }
   ]
}

我們也可以在主機(jī)的/home/xxx/docker/opt/registry中查看:

image.png


  • 刪除鏡像
curl -I -X DELETE http://127.0.0.1:5000/v2/busybox/manifests/sha256:ee44b399df993016003bf5466bd3eeb221305e9d0fa831606bc7902d149c775b

出現(xiàn)Not Found命令行出錯(cuò)導(dǎo)致的。

HTTP/1.1 404 Not Found
Content-Type: text/plain; charset=utf-8
Docker-Distribution-Api-Version: registry/2.0
X-Content-Type-Options: nosniff
Date: Tue, 24 Nov 2020 07:08:45 GMT
Content-Length: 19
  • 注意:配置完config.yml不要忘記重啟一下registry
docker restart myregistry
HTTP/1.1 202 Accepted
Docker-Distribution-Api-Version: registry/2.0
X-Content-Type-Options: nosniff
Date: Tue, 24 Nov 2020 07:36:09 GMT
Content-Length: 0
  • 如果誤刪了sha256:dc3bacd8b5ea796cea5d6070c8f145df9076f26a6bc1c8981fd5b176d37de843,查看數(shù)據(jù)大小。
888.0K  /var/lib/registry
888.0K  total

*刪除sha256:ee44b399df993016003bf5466bd3eeb221305e9d0fa831606bc7902d149c775b,查看數(shù)據(jù)大小。(只是刪除了元數(shù)據(jù))

/ # du -sch /var/lib/registry/
860.0K  /var/lib/registry/
860.0K  total
  • 查看registry數(shù)據(jù)目錄


    image.png

垃圾回收

  • 進(jìn)行容器執(zhí)行垃圾回收命令
/var/lib/registry # registry garbage-collect /etc/docker/registry/config.yml
busybox

0 blobs marked, 3 blobs and 0 manifests eligible for deletion
blob eligible for deletion: sha256:5f5dd3e95e9fd44603cbb8968144999b730545267ce74d9b442f8f7f7827f776
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/5f/5f5dd3e95e9fd44603cbb8968144999b730545267ce74d9b442f8f7f7827f776  go.version=go1.11.2 instance.id=d1fcb128-f544-452d-b2a6-caed701bd76f service=registry
blob eligible for deletion: sha256:dc3bacd8b5ea796cea5d6070c8f145df9076f26a6bc1c8981fd5b176d37de843
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/dc/dc3bacd8b5ea796cea5d6070c8f145df9076f26a6bc1c8981fd5b176d37de843  go.version=go1.11.2 instance.id=d1fcb128-f544-452d-b2a6-caed701bd76f service=registry
blob eligible for deletion: sha256:ee44b399df993016003bf5466bd3eeb221305e9d0fa831606bc7902d149c775b
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/ee/ee44b399df993016003bf5466bd3eeb221305e9d0fa831606bc7902d149c775b  go.version=go1.11.2 instance.id=d1fcb128-f544-452d-b2a6-caed701bd76f service=registry

  • 查看數(shù)據(jù)大小
92.0K   /var/lib/registry/
92.0K   total
  • 查看registry數(shù)據(jù)目錄


    image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容