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


