在docker注册表中推送,删除和重新映像的行为

时间:2016-08-23 11:15:25

标签: docker docker-registry

我的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

0 个答案:

没有答案