1. 介紹
1.1 介紹
大家已經跟著福哥學習了Docker私有倉庫的搭建和基本使用方法了,現在有一個問題:如果倉庫里面的鏡像老了,想更新一下,怎么辦呢?
Registry服務器的鏡像是不支持更新操作的,如果要更新一個鏡像只能先刪除再重新push,今天福哥就帶著大家學習如何刪除Registry服務器里面的鏡像,一起來吧~~
2. 官方方法
2.1 復制config.yml
從registry容器里面將
/etc/docker/registry/config.yml復制出來。
docker cp registry:/etc/docker/registry/config.yml .
默認config.yml內容如下:
version: 0.1
log:
fields:
service: registry
storage:
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
2.2 開啟刪除操作
設置config.yml,在storage節點添加delete配置設置為true。
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
2.3 覆蓋config.yml
將修改過的config.yml覆蓋容器里面的。
docker cp config.yml registry:/etc/docker/registry/config.yml
2.4 重啟倉庫容器
docker restart registry
2.5 查詢鏡像標簽列表
curl 'https://registry.tongfu.net:5000/v2/centos/tags/list'
2.6 查詢digest
curl -i -sS -H 'Accept: Application/vnd.docker.distribution.manifest.v2+json' 'https://registry.tongfu.net:5000/v2/centos/manifests/latest'
2.7 刪除鏡像
curl -X DELETE https://registry.tongfu.net:5000/v2/centos/manifests/sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
2.8 垃圾回收
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml
2.9 再次查看鏡像標簽列表
curl 'https://registry.tongfu.net:5000/v2/centos/tags/list'
可以看到tags為null,也就是說已經被刪除了~~
2.10 查看鏡像
curl 'https://registry.tongfu.net:5000/v2/_catalog'
我去!!!怎么還TM在這呢啊~~~~~~
3. 暴力方法
3.1 刪除鏡像文件
直接刪除倉庫容器
/var/lib/registry/docker/registry/v2/repositories/下面的鏡像目錄。
docker exec registry rm -rf /var/lib/registry/docker/registry/v2/repositories/centos
或者可以將這個目錄通過volume映射到宿主機上面來,這樣便于管理。
rm -rf /data/docker.registry/var/lib/registry/docker/registry/v2/repositories/centos
3.2 垃圾回收
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml
3.3 重啟倉庫容器
docker restart registry
3.4 查看鏡像
curl 'https://registry.tongfu.net:5000/v2/_catalog'
終于刪除掉了~~~
4. 總結
Docker私有倉庫Registry服務器刪除鏡像的坑還是真挺多的,最坑爹的莫過于官方的方法不能真正的刪除服務器上面的鏡像文件,只是把鏡像的tags給干掉了而已,真是太惡心了~~
福哥推薦使用暴力方法刪除鏡像,這樣既刪除的徹底,又不用開啟storage的delete開關,安全可靠~~
https://tongfu.net/home/35/blog/513697.html