Docker web sitesinde mevcut resim dosyalarını şu şekilde arayabiliriz:
İndirme boyutlarının çekilmeden önce ne olacağını nasıl söyleyebilirim?
docker.io pull [image]
Docker web sitesinde mevcut resim dosyalarını şu şekilde arayabiliriz:
İndirme boyutlarının çekilmeden önce ne olacağını nasıl söyleyebilirim?
docker.io pull [image]
Yanıtlar:
Docker API'sine, Docker Remote API v1.10'a bakıldığında, görüntülerin boyutlarını almanın hiçbir yolu görünmüyor. "2.2 Görüntüler" bölümü resimlerle ilgili sorgulamanın özelliklerini gösterir.
GET /images/json?all=0 HTTP/1.1
**Example response**:
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"RepoTags": [
"ubuntu:12.04",
"ubuntu:precise",
"ubuntu:latest"
],
"Id": "8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c",
"Created": 1365714795,
"Size": 131506275,
"VirtualSize": 131506275
},
{
"RepoTags": [
"ubuntu:12.10",
"ubuntu:quantal"
],
"ParentId": "27cf784147099545",
"Id": "b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc",
"Created": 1364102658,
"Size": 24653,
"VirtualSize": 180116135
}
]
Ancak bu sorgunun gerçek bir Docker örneğine karşı gitmesi gerekiyor. İşte yukarıdaki RESTful sorgusunun nasıl kullanılabileceğini gösteren bir örnek:
$ echo -e "GET /images/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 858
Connection: close
Date: Fri, 20 Dec 2013 16:02:41 GMT
[{"Repository":"ubuntu","Tag":"12.04","Id":"8dbd9e392...",
"Created":1365714795,"Size":131502179,"VirtualSize":131502179},
{"Repository":"ubuntu","Tag":"latest","Id":"8dbd9e392...",
"Created":1365714795,"Size":131502179,"VirtualSize":131502179},
{"Repository":"ubuntu","Tag":"precise","Id":"8dbd9e392...",
"Created":1365714795,"Size":131502179,"VirtualSize":131502179},
{"Repository":"ubuntu","Tag":"12.10","Id":"b750fe792...",
"Created":1364102658,"Size":24653,"VirtualSize":180116135},
{"Repository":"ubuntu","Tag":"quantal","Id":"b750fe792...",
"Created":1364102658,"Size":24653,"VirtualSize":180116135}]
Bu belirli RESTful çağrısını kullanarak halka açık depoları sorgulamanın bir yolunu görmedim. Docker.io'nun resimlerini sorgulayabileceğiniz gibi görünen tek RESTful yöntemi yalnızca arama yoluyla oldu GET /images/search
, ancak API bunun için döndürülen herhangi bir boyut özelliğini göstermiyor.
docker search
Bu, sorunuza doğrudan bir cevap değil ama yine de faydalı olacağını umuyorum.
In disk kullanım senaryo benim de Docker deneyler böyle bir şey kullanın:
docker run --entrypoint=/bin/sh $image -c 'du -sh / 2>/dev/null | cut -f1'
Böylece koşabilirsiniz, örneğin:
docker run --entrypoint=/bin/sh ubuntu -c 'du -sh / 2>/dev/null | cut -f1'
Veya bu betiği indirebilirsiniz: disk kullanımı
ve örneğin bu 3 resim için ./disk-usage "ubuntu busybox gcc"
disk kullanımının (bildirildiği gibi du -sh
) gösterilmesi için:
Image Disk usage
----- ----------
ubuntu 209M
busybox 2.6M
gcc 1.5G
Lütfen herhangi bir görüntü için gerekli olan gerçek indirmeyi göstermediğini ve görüntüyü indirdikten sonra sonucu göstereceğini, ancak diğerlerine kıyasla belirli bir görüntünün ne kadar şişirilmiş olduğuna dair bir fikir verdiğini unutmayın.
Bu görüntüleri diğer makinelere indirmek mi yoksa hiç kullanmak mı istediğinize karar vermek için bir makinede çalıştırabilirsiniz.
HTTP API v2 için, boyuta size
ve altındaki etiket kaynakları aracılığıyla erişilebilir full_size
. İşte repo etiketlerimden birinin örnek URL’si:
https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1
Çekme işlemi için docker koduna gerçekten bakarsanız, cevabınızın orada olduğunu düşünüyorum. Kabın görüntüsü önbelleğe alınmamışsa, görüntünün çekilmesi sırasında, liman işçisi ilk önce görüntüyle ilgili bilgileri katman sayısı, her katmanın boyutu vb. Gibi kayıt defterinden toplar.
Bu dosyayı okumak için başvuruda bulunabilirim.
https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go
curl -s -H "Authorization: JWT " "https://hub.docker.com/v2/repositories/library/<image-name>/tags/?page_size=100" | jq -r '.results[] | select(.name == "<tag-name>") | .images[0].size' | numfmt --to=iec-i
Microsoft Container Registry gibi diğer kayıtlardaki görüntü için. 3 yol buldum.
docker manifest inspect
sıkıştırılmış boyutunun nasıl elde edileceği hakkında fikir verebilecek açık verileri gözlemlemek için kullanın .docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' '{sum+=$NF} END {print sum}' | numfmt --to=iec-i
Etkinleştirmek için docker manifest inspect
, düzenleme ~/.docker/config.json
dosyası ve set experimental
içinenable
(Referans:. Liman işçisi incelemek manifestosunda )
Görüntüyü Docker Hub'a itin ve görüntünün sıkıştırılmış boyutunu Docker Hub web sitesinde bulabilirsiniz.
Kullanım docker save
bir .tar dosyaya kaydetmek ve sonra bir Tar.gz dosyayı sıkıştırmak için.
docker save my-image:latest > my-image.tar
# Compress the .tar file
gzip my-image.tar
# Check the size of the compressed image
ls -lh my-image.tar.gz