हम इस तरह docker वेबसाइट पर उपलब्ध छवि फाइलों की खोज कर सकते हैं:
मैं यह कैसे बता सकता हूं कि खींचने से पहले डाउनलोड का आकार क्या होगा?
docker.io pull [image]
हम इस तरह docker वेबसाइट पर उपलब्ध छवि फाइलों की खोज कर सकते हैं:
मैं यह कैसे बता सकता हूं कि खींचने से पहले डाउनलोड का आकार क्या होगा?
docker.io pull [image]
जवाबों:
Docker, Docker Remote API v1.10 के लिए API को देखते हुए , ऐसा नहीं लगता है कि छवियों का आकार प्राप्त करने का कोई तरीका है। धारा "2.2 छवियाँ" छवियों के बारे में क्वेरी करने के तरीके के बारे में बताती है।
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
}
]
लेकिन इस क्वेरी को एक वास्तविक डॉकर उदाहरण के खिलाफ जाने की जरूरत है। यहां एक उदाहरण दिखाया गया है कि कोई व्यक्ति उपरोक्त RESTful क्वेरी का उपयोग कैसे कर सकता है:
$ 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}]
मैंने इस विशेष RESTful कॉल का उपयोग करके सार्वजनिक रिपॉजिटरी को क्वेरी करने का कोई तरीका नहीं देखा। केवल अन्य रीस्टफ़ुल विधि जो आपको दिखती है वह docker.io की छवियों को खोज के माध्यम से क्वेरी कर सकती है GET /images/search
, लेकिन एपीआई इसके लिए लौटाए जा रहे किसी भी आकार के गुणों को नहीं दिखाता है।
docker search
यह आपके प्रश्न का सीधा उत्तर नहीं है, लेकिन मुझे आशा है कि यह फिर भी मददगार होगा।
में डिस्क उपयोग स्क्रिप्ट मेरे में डोकर प्रयोगों मैं कुछ इस तरह का उपयोग करें:
docker run --entrypoint=/bin/sh $image -c 'du -sh / 2>/dev/null | cut -f1'
तो आप चला सकते हैं, जैसे:
docker run --entrypoint=/bin/sh ubuntu -c 'du -sh / 2>/dev/null | cut -f1'
या आप उस स्क्रिप्ट को डाउनलोड कर सकते हैं: डिस्क-उपयोग
और चलाने के लिए उन 3 छवियों के लिए प्रदर्शित ./disk-usage "ubuntu busybox gcc"
डिस्क उपयोग (जैसा कि रिपोर्ट किया गया है du -sh
):
Image Disk usage
----- ----------
ubuntu 209M
busybox 2.6M
gcc 1.5G
कृपया ध्यान दें कि यह किसी भी दी गई छवि के लिए आवश्यक वास्तविक डाउनलोड नहीं दिखाता है, और यह छवि को डाउनलोड करने के बाद परिणाम प्रदर्शित करेगा, लेकिन यह इस बात पर कुछ विचार देता है कि दूसरों की तुलना में किसी भी छवि को कैसे फूला हुआ माना जाता है।
आप यह निर्धारित करने के लिए इसे एक मशीन पर चला सकते हैं कि क्या आप उस चित्रों को अन्य मशीनों पर डाउनलोड करना चाहते हैं, या इसका उपयोग करना चाहते हैं।
HTTP API v2 के लिए, आकार नीचे टैग संसाधनों के माध्यम से उपलब्ध है size
और full_size
। मेरे रेपो के टैग में से एक उदाहरण URL है:
https://cloud.docker.com/v2/repositories/deepdriveio/deepdrive/tags/?page_size=25&page=1
यदि आप वास्तव में पुल ऑपरेशन के लिए docker कोड को देखते हैं, तो मुझे लगता है कि आपका उत्तर है। यदि कंटेनर की छवि को कैश नहीं किया जाता है, तो छवि को खींचने के दौरान, डॉकटर पहले रजिस्ट्री से छवि के बारे में जानकारी इकट्ठा करता है जैसे परतों की संख्या, प्रत्येक परतों का आकार आदि।
मैं इस फ़ाइल को पढ़ने के लिए संदर्भित करूंगा।
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 कंटेनर रजिस्ट्री पर छवि के लिए। मैं 3 तरीकों का पता लगाता हूं।
docker manifest inspect
प्रकट डेटा का निरीक्षण करने के लिए उपयोग करें , जो आपको यह विचार दे सकता है कि छवि के संकुचित आकार को कैसे प्राप्त किया जाए।docker manifest inspect -v <registry-domain>/<image-name> | grep size | awk -F ':' '{sum+=$NF} END {print sum}' | numfmt --to=iec-i
सक्षम करने के लिए docker manifest inspect
, ~/.docker/config.json
फ़ाइल को संपादित करें और सेट experimental
करें enable
। (संदर्भ: डोकेर मेनिफ़ेस्ट निरीक्षण )
छवि को डॉकटर हब में धकेलें और आप डोकर हब वेबसाइट पर छवि का संकुचित आकार प्राप्त कर सकते हैं।
docker save
छवि को .tar फ़ाइल में सहेजने के लिए उपयोग करें और फिर इसे .tar.gz फ़ाइल में संपीड़ित करें।
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