कैसे खींचा जाने से पहले डोकर छवि का आकार निर्धारित करने के लिए?


35

हम इस तरह docker वेबसाइट पर उपलब्ध छवि फाइलों की खोज कर सकते हैं:

मैं यह कैसे बता सकता हूं कि खींचने से पहले डाउनलोड का आकार क्या होगा?

docker.io pull [image]

1
सामान्य उत्तर नहीं है, लेकिन जिस तरह से स्टैब्रेव यूबंटू छवियों का निर्माण किया जाता है , उसे देखते हुए, आप उपयोग किए गए टारबॉल से छवि के आकार के निचले हिस्से का अनुमान लगा सकते हैं । (पूर्वानुमेय बैंडविड्थ उपयोग के लिए, आप केवल चित्र स्वयं बना सकते हैं - तब आपको पता चलेगा कि कितना डाउनलोड किया गया है, अर्थात केवल
टैरबॉल

जवाबों:


14

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 की टीम यह जानकारी उपलब्ध कराना शुरू कर देगीdocker search
Sepero

@ शेपरो - हाँ मुझे यकीन है कि समय के साथ ऐसी चीजें जुड़ जाएंगी। यदि इस A ने आपके Q के कृपया इसे हल कर दिया है तो इसे स्वीकार कर लिया जाए ताकि दूसरे को पता चले कि आपके मुद्दे का समाधान भी हो गया है।
slm

बहुत बढ़िया, वास्तव में मुझे क्या चाहिए!
ब्रैडी डॉवलिंग

7

यह आपके प्रश्न का सीधा उत्तर नहीं है, लेकिन मुझे आशा है कि यह फिर भी मददगार होगा।

में डिस्क उपयोग स्क्रिप्ट मेरे में डोकर प्रयोगों मैं कुछ इस तरह का उपयोग करें:

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

कृपया ध्यान दें कि यह किसी भी दी गई छवि के लिए आवश्यक वास्तविक डाउनलोड नहीं दिखाता है, और यह छवि को डाउनलोड करने के बाद परिणाम प्रदर्शित करेगा, लेकिन यह इस बात पर कुछ विचार देता है कि दूसरों की तुलना में किसी भी छवि को कैसे फूला हुआ माना जाता है।

आप यह निर्धारित करने के लिए इसे एक मशीन पर चला सकते हैं कि क्या आप उस चित्रों को अन्य मशीनों पर डाउनलोड करना चाहते हैं, या इसका उपयोग करना चाहते हैं।



1

यदि आप वास्तव में पुल ऑपरेशन के लिए docker कोड को देखते हैं, तो मुझे लगता है कि आपका उत्तर है। यदि कंटेनर की छवि को कैश नहीं किया जाता है, तो छवि को खींचने के दौरान, डॉकटर पहले रजिस्ट्री से छवि के बारे में जानकारी इकट्ठा करता है जैसे परतों की संख्या, प्रत्येक परतों का आकार आदि।

मैं इस फ़ाइल को पढ़ने के लिए संदर्भित करूंगा।

https://github.com/moxiegirl/docker/blob/master/distribution/xfer/download.go


1
  1. डॉकर हब पर छवि के लिए:
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
  1. अन्य रजिस्ट्री जैसे 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.