我的docker注册表有一些奇怪的行为。 我检查了容器的空间:
HashSet
现在我推出一张新图片:
Graphics2D
比我重新检查空间:
/ # du -sh
32.5M
好的,这是正常的。
现在我手动删除此图像的清单($ docker push myreg:5000/proj1/base:1.2
The push refers to a repository [myreg:5000/proj1/base]
89626147d178: Pushed
3fe9f0ce23f5: Layer already exists
f59b7e59ceaa: Layer already exists
1.2: digest: sha256:effd45285012fdcc8ba7137a714d12f739abc372cd284ebcc079d083449edee3 size: 953
)
(如果有人知道更好的方式......)
所以我这样做:
/ # du -sh
62.8M
这是我推送图像时创建的清单。我要删除它:
curl -XDELETE http://my-reg:5000/v2/proj1/base/manifests/1.2 seems not to work
空间相同
/var/lib/registry/docker/registry/v2/repositories/proj1/base/_manifests/revisions/sha256 # ls -l
total 0
drwxr-xr-x 2 root root 17 Aug 23 09:50 effd45285012fdcc8ba7137a714d12f739abc372cd284ebcc079d083449edee3
我使用GC删除未使用的图层/东西+重新检查空间:
rm -r effd45285012fdcc8ba7137a714d12f739abc372cd284ebcc079d083449edee3
这很好!但是当我重新拍摄相同的图像时: 它非常快,它告诉我该层已经存在:
/ # du -sh
62.8M
我的清单中还有相同的修订版。 我检查一下空间:
/bin/registry garbage-collect /etc/docker/registry/config.yml
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/45/45d78757942e9b4a09f74611cc8e1f61afe8dd2cd55996f4383534279dc49418 go.version=go1.6.3 instance.id=6dbf83a9-02da-40f3-adca-8a57cf697bea
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/c9/c9513f9342779b701e300b83f7409af763352751d50f06a8708eab3bf2980164 go.version=go1.6.3 instance.id=6dbf83a9-02da-40f3-adca-8a57cf697bea
INFO[0000] Deleting blob: /docker/registry/v2/blobs/sha256/ef/effd45285012fdcc8ba7137a714d12f739abc372cd284ebcc079d083449edee3 go.version=go1.6.3 instance.id=6dbf83a9-02da-40f3-adca-8a57cf697bea
/ # du -sh
32.5M .
/ #
为什么这种情况不会再次增长?为什么这种情况会如此之快(不是由GC抛弃)?
这里使用的是89626147d178: Layer already exists
3fe9f0ce23f5: Layer already exists
f59b7e59ceaa: Layer already exists
(从我运行GC的位置)而不是/ # du -sh
32.5M
我想要的空间(以及我刚推新图片时使用的位置)。
/bin/registry