Tampaknya tidak ada metode sederhana untuk menghapus gambar dari registri pada hari ini dan sepertinya fitur untuk registri 2.1 tonggak sejarah.
Salah satu pilihan apa yang kita miliki saat ini dengan ini tidak bekerja
anovil@ubuntu-anovil remove-registry]$ curl -X DELETE localhost:5000/v2/alpine/manifests/v1{"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]}[anovil@ubuntu-anovil remove-registry]$
adalah menghapusnya secara manual dari registri itu sendiri. Hanya untuk menghindari menghapus file yang salah secara tidak sengaja, saya mengujinya dengan script ini dari github. Saya tidak menjamin Bagaimana skrip ini bekerja (meskipun saya memeriksanya dengan cepat sebelum saya mengujinya).
Jadi, saya membuat tes dan itu sepertinya berhasil :)
[1] saya kira, Anda menjalankan registri dengan docker itu sendiri.
[anovil@ubuntu-anovil remove-registry]$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES88f8e1a1d7a7 registry:2 "/bin/registry /etc/d" 37 minutes ago Up 37 minutes 0.0.0.0:5000->5000/tcp registry[anovil@ubuntu-anovil remove-registry]$
[2] saya membuat Dockerfile minimal hanya dengan FROM alpine
konten dan dibuat alpine: v1 dan didorong ke registri pribadi saya yang berjalan di localhost:5000. Query dari registri, itu kembali seperti yang diharapkan.
[anovil@ubuntu-anovil remove-registry]$ curl -X GET localhost:5000/v2/alpine/tags/list{"name":"alpine","tags":["v1"]}[anovil@ubuntu-anovil remove-registry]$
[3] Kemudian saya masuk ke registri dengan docker exec
dan memeriksa penggunaan disk sebelum saya melakukan percobaan saya
root@88f8e1a1d7a7:/# du -sch /var/lib/registry/ 2.5M /var/lib/registry/2.5M totalroot@88f8e1a1d7a7:/#
[4] setelah kembali ke host saya, saya menyalin file yang berat (mongodb.tgz) ke dalam wadah saya dan membuat versi V2 yang dibangun dan didorong.
[anovil@ubuntu-anovil remove-registry]$ docker build -t localhost:5000/alpine:v2 .Sending build context to Docker daemon 61.99 MBStep 1 : FROM alpine ---> 2314ad3eeb90Step 2 : COPY mongodb.tgz /mongodb.tgz ---> d7c7645a3fe2Successfully built d7c7645a3fe2[anovil@ubuntu-anovil remove-registry]$ docker push localhost:5000/alpine:v2The push refers to a repository [localhost:5000/alpine] (len: 1)d7c7645a3fe2: Pushed 5ff05309724e: Image already exists v2: digest: sha256:7bea1ec2910170bd88412b622aee6129791673cf1fd8c0e1e34f15ec26428774 size: 4467[anovil@ubuntu-anovil remove-registry]$
[5] Setelah memeriksa ukuran lagi dalam registri, telah meningkat menjadi 62MB:
root@88f8e1a1d7a7:/# du -sch /var/lib/registry/ 62M /var/lib/registry/62M totalroot@88f8e1a1d7a7:/#
[6] untuk menjalankan delete_docker_registry_image
, Anda perlu memasukkan skrip ke dalam wadah yang menghosting registri, salah satu opsi untuk melakukannya adalah dengan curl. Juga, skrip ini membutuhkan jq
.
root@88f8e1a1d7a7:/# apt-get update && apt-get install -y curl jq...root@88f8e1a1d7a7:/#
[7] Jalankan script, coba dengan --dry-run
opsi pertama dan jangan lupa tag Versi (v2 dalam hal ini), ada juga yang baik -h
root@88f8e1a1d7a7:/# delete_docker_registry_image --image alpine:v2 --dry-runDRY_RUN: would have deleted tag directory: repositories/alpine/_manifests/tags/v2DRY_RUN: would have deleted manifest revision: repositories/alpine/_manifests/revisions/sha256/7bea1ec2910170bd88412b622aee6129791673cf1fd8c0e1e34f15ec26428774DRY_RUN: would have deleted directory: blobs/sha256/e2/e2cc9aed084e01fa5cf93c09121035ac4d712113425ae68b678c28591beec5c6DRY_RUN: would have deleted directory: blobs/sha256/7a/7ada67971e952e353ab14d8f9bdd4e41e4c41099b05a5da09f2700b51d93908aDRY_RUN: would have deleted directory: blobs/sha256/7b/7bea1ec2910170bd88412b622aee6129791673cf1fd8c0e1e34f15ec26428774DRY_RUN: would have deleted layer metadata directory: repositories/alpine/_layers/sha256/e2cc9aed084e01fa5cf93c09121035ac4d712113425ae68b678c28591beec5c6root@88f8e1a1d7a7:/# delete_docker_registry_image --image alpine:v2 root@88f8e1a1d7a7:/#
[8] dan voila !!
root@88f8e1a1d7a7:/# du -sch /var/lib/registry/ 2.5M /var/lib/registry/2.5M totalroot@88f8e1a1d7a7:/#