Wir können auf der Docker-Website nach verfügbaren Bilddateien wie folgt suchen:
Woran erkenne ich die Downloadgröße (n) vor dem Abrufen?
docker.io pull [image]
Wir können auf der Docker-Website nach verfügbaren Bilddateien wie folgt suchen:
Woran erkenne ich die Downloadgröße (n) vor dem Abrufen?
docker.io pull [image]
Antworten:
Bei der API für Docker, Docker Remote API v1.10 , scheint es keine Möglichkeit zu geben, die Größe der Bilder zu ermitteln. Abschnitt "2.2 Bilder" zeigt die Spezifikation für die Abfrage von Bildern.
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
}
]
Diese Abfrage muss sich jedoch gegen eine tatsächliche Docker-Instanz richten. Hier ist ein Beispiel, das zeigt, wie man die obige RESTful-Abfrage verwenden kann:
$ 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}]
Ich sah keine Möglichkeit, die öffentlichen Repositorys mit diesem speziellen RESTful-Aufruf abzufragen. Die einzige andere RESTful-Methode, mit der Sie die Bilder von docker.io abfragen konnten, war die Suche. GET /images/search
Die API zeigt jedoch keine Größenattribute an , die hierfür zurückgegeben werden.
docker search
Dies ist keine direkte Antwort auf Ihre Frage, aber ich hoffe, es wird trotzdem hilfreich sein.
Im Skript zur Datenträgerverwendung in meinen Docker-Experimenten verwende ich Folgendes:
docker run --entrypoint=/bin/sh $image -c 'du -sh / 2>/dev/null | cut -f1'
So können Sie zB laufen:
docker run --entrypoint=/bin/sh ubuntu -c 'du -sh / 2>/dev/null | cut -f1'
Oder Sie können das Skript herunterladen: Datenträgerverwendung
und ausführen, um z. B. ./disk-usage "ubuntu busybox gcc"
die Datenträgerverwendung (wie von gemeldet du -sh
) für diese 3 Bilder anzuzeigen:
Image Disk usage
----- ----------
ubuntu 209M
busybox 2.6M
gcc 1.5G
Bitte beachten Sie, dass nicht der tatsächliche Download für ein bestimmtes Bild angezeigt wird und das Ergebnis nach dem Herunterladen des Bildes angezeigt wird, aber es gibt eine Vorstellung davon, wie aufgebläht ein bestimmtes Bild im Vergleich zu anderen ist.
Sie können es auf einem Computer ausführen, um zu entscheiden, ob Sie diese Bilder auf andere Computer herunterladen oder überhaupt verwenden möchten.
Für die HTTP-API v2 ist die Größe über die Tags-Ressource unter size
und verfügbar full_size
. Hier ist eine Beispiel-URL aus einem der Tags meines Repos:
https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1
Wenn Sie sich den Docker-Code für die Pull-Operation genauer ansehen, ist Ihre Antwort sicher da. Wenn das Bild des Containers nicht zwischengespeichert ist, sammelt Docker beim Ziehen des Bildes zuerst die Informationen über das Bild aus der Registrierung, z. B. Anzahl der Ebenen, Größe der einzelnen Ebenen usw. usw.
Ich würde auf diese Datei verweisen.
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
Für Bilder in anderen Registrierungsdatenbanken wie Microsoft Container Registry. Ich finde 3 Wege heraus.
docker manifest inspect
diese Option , um die Manifestdaten zu beobachten, die Ihnen eine Vorstellung davon geben können, wie Sie die komprimierte Größe des Bildes erhalten.docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' '{sum+=$NF} END {print sum}' | numfmt --to=iec-i
Zum Aktivieren docker manifest inspect
bearbeiten Sie die ~/.docker/config.json
Datei und setzen sie experimental
auf enable
. (Referenz: Docker-Manifest inspizieren )
Wenn Sie das Bild in Docker Hub verschieben, können Sie die komprimierte Größe des Bildes auf der Docker Hub-Website abrufen.
Verwenden Sie docker save
diese Option, um das Bild in einer .tar-Datei zu speichern und anschließend in einer .tar.gz-Datei zu komprimieren.
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