मैं मैन्युअल रूप से डॉकर हब से एक डॉकर छवि डाउनलोड करना चाहता हूं । अधिक विशेष रूप से, मैं एक मशीन पर डॉकर हब से डॉकर छवि डाउनलोड करना चाहता हूं जो प्रतिबंधित वातावरण में है (जो नहीं कर सकता है) डॉकर क्लाइंट सॉफ़्टवेयर स्थापित है। मैंने सोचा होगा कि यह आधिकारिक एपीआई का उपयोग करना संभव होगा , लेकिन ऐसा प्रतीत नहीं होता है - निम्नलिखित चर्चा देखें:
क्या वास्तव में यह मामला है कि एपीआई छवियों को डाउनलोड करने का समर्थन नहीं करता है? क्या इसके आसपास काम करने का कोई तरीका है?
अद्यतन 1:
मैं निम्नलिखित सर्वरफॉल्ट पोस्ट पर आया:
स्वीकार किए जाते हैं समाधान का उपयोग करता है docker save
आदेश है, जो मेरी स्थिति में मदद नहीं करता है। लेकिन वहाँ तैनात एक अन्य समाधान निम्नलिखित StackOverflow पोस्ट का हवाला देता है:
वहाँ समाधान में से एक कमांड-लाइन टूल को संदर्भित करता है जिसे डॉक-रजिस्ट्री-डिबग कहा जाता है , जो अन्य चीजों के अलावा, curl
एक छवि को डाउनलोड करने के लिए एक कमांड उत्पन्न कर सकता है । यह है जो मुझे मिला:
user@host:~$ docker-registry-debug curlme docker ubuntu
# Reading user/passwd from env var "USER_CREDS"
# No password provided, disabling auth
# Getting token from https://index.docker.io
# Got registry endpoint from the server: https://registry-1.docker.io
# Got token: signature=1234567890abcde1234567890abcde1234567890,repository="library/docker",access=read
curl -i --location-trusted -I -X GET -H "Authorization: Token signature=1234567890abcde1234567890abcde1234567890,repository="library/docker",access=read" https://registry-1.docker.io/v1/images/ubuntu/layer
user@host:~$ curl \
-i --location-trusted -I -X GET \
-H "Authorization: Token signature=1234567890abcde1234567890abcde1234567890,repository="library/docker",access=read"
https://registry-1.docker.io/v1/images/ubuntu/layer
HTTP/1.1 404 NOT FOUND
Server: gunicorn/18.0
Date: Wed, 29 Nov 2017 01:00:00 GMT
Expires: -1
Content-Type: application/json
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 29
X-Docker-Registry-Version: 0.8.15
X-Docker-Registry-Config: common
Strict-Transport-Security: max-age=31536000
इसलिए दुर्भाग्य से ऐसा लगता है कि curl
उत्पन्न कमांड काम नहीं करता है।
अद्यतन 2:
ऐसा लगता है कि मैं डॉकर हब से लेयर ब्लॉब्स डाउनलोड करने में सक्षम हूं। यहाँ है कि मैं वर्तमान में इसके बारे में कैसे जा रहा हूँ।
एक प्राधिकरण टोकन प्राप्त करें:
user@host:~$ export TOKEN=\
"$(curl \
--silent \
--header 'GET' \
"https://auth.docker.io/token?service=registry.docker.io&scope=repository:library/ubuntu:pull" \
| jq -r '.token' \
)"
एक छवि प्रकट करें:
user@host:~$ curl \
--silent \
--request 'GET' \
--header "Authorization: Bearer ${TOKEN}" \
'https://registry-1.docker.io/v2/library/ubuntu/manifests/latest' \
| jq '.'
एक छवि प्रकट करें और बूँद रकम निकालें:
user@host:~$ curl \
--silent \
--request 'GET' \
--header "Authorization: Bearer ${TOKEN}" \
'https://registry-1.docker.io/v2/library/ubuntu/manifests/latest' \
| jq -r '.fsLayers[].blobSum'
sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
sha256:be588e74bd348ce48bb7161350f4b9d783c331f37a853a80b0b4abc0a33c569e
sha256:e4ce6c3651b3a090bb43688f512f687ea6e3e533132bcbc4a83fb97e7046cea3
sha256:421e436b5f80d876128b74139531693be9b4e59e4f1081c9a3c379c95094e375
sha256:4c7380416e7816a5ab1f840482c9c3ca8de58c6f3ee7f95e55ad299abbfe599f
sha256:660c48dd555dcbfdfe19c80a30f557ac57a15f595250e67bfad1e5663c1725bb
एकल परत बूँद डाउनलोड करें और इसे एक फ़ाइल में लिखें:
user@host:~$ BLOBSUM=\
"sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
user@host:~$ curl \
--silent \
--location \
--request GET \
--header "Authorization: Bearer ${TOKEN}" \
"https://registry-1.docker.io/v2/library/ubuntu/blobs/${BLOBSUM}" \
> "${BLOBSUM/*:/}.gz"
एक फाइल में सभी बूँद रकम लिखें:
user@host:~$ curl \
--silent \
--request 'GET' \
--header "Authorization: Bearer ${TOKEN}" \
'https://registry-1.docker.io/v2/library/ubuntu/manifests/latest' \
| jq -r '.fsLayers[].blobSum' > ubuntu-blobsums.txt
मैनिफ़ेस्ट से परत की सभी परतें डाउनलोड करें:
user@host:~$ while read BLOBSUM; do
curl \
--silent \
--location \
--request 'GET' \
--header "Authorization: Bearer ${TOKEN}" \
"https://registry-1.docker.io/v2/library/ubuntu/blobs/${BLOBSUM}" \
> "${BLOBSUM/*:/}.gz"; \
done < blobsums.txt
अब मेरे पास परत की एक गुच्छा है और मुझे उन्हें एक छवि में फिर से जोड़ने की आवश्यकता है - मुझे लगता है।
सम्बंधित लिंक्स:
डॉकर सामुदायिक मंच: डॉकर हब एपीआई छवियों को पुनः प्राप्त करता है
डॉकर इशू # 1016: डॉकर कमांड के बिना डॉक करने वाले चित्र प्राप्त करें। जैसे wget के साथ
सर्वरफॉल्ट: गैर-इंटरनेट से जुड़ी मशीन में स्थानांतरण के लिए डॉकटर छवि डाउनलोड करना
StackOverflow: गैर-इंटरनेट से जुड़ी मशीन में स्थानांतरण के लिए डॉकटर छवि डाउनलोड करना
StackOverflow: पुल कमांड का उपयोग किए बिना डॉकटर चित्र कैसे डाउनलोड करें?