2017-02-09 15 views
17

मैं कोरोस सर्वर पर, एक डॉकर कंटेनर में एक प्रतिक्रिया ऐप चला रहा हूं। मान लें कि इसे https://hub.docker.com/r/myimages/myapp से डॉकरहब से खींचा गया है।मैं कैसे जांचूं कि मेरी स्थानीय डॉकर छवि पुरानी है, कहीं और से धक्का दिए बिना?

अब मैं समय-समय पर जांचना चाहता हूं यदि ऐप कंटेनर के लिए डॉकरबब छवि अपडेट की गई है, यह देखने के लिए कि क्या मैं स्थानीय रूप से चल रहा हूं, पीछे है।

रिमोट छवि की तुलना में स्थानीय डॉकर छवि पुरानी है या नहीं, यह जांचने का सबसे प्रभावी तरीका क्या होगा? अब तक मिले सभी समाधान बैश स्क्रिप्ट या बाहरी सेवाएं हैं जो अद्यतन पर धक्का देते हैं। मैं एक ऐसा समाधान ढूंढना चाहता हूं जो जितना संभव हो सके डॉकर के मूल के रूप में है, और कहीं और से अधिसूचना को धक्का देने से बचना चाहते हैं (एक अद्यतन छवि के सर्वर को सतर्क करने के लिए)।

+2

मैं एक डोकर पुल कर सकता है, और फिर हैश grep और है कि किसी तरह की तुलना करें। लेकिन यह धीमा, संसाधन गहन और भंगुर होगा। मैं उम्मीद करता हूं कि वहां एक और मजबूत समाधान होगा, लेकिन इसे खोजने में सक्षम नहीं है। – vsjn3290ckjnaoij2jikndckjb

+0

शायद यह मदद कर सकता है: http://stackoverflow.com/questions/26423515/how-to-automatically-update-your-docker-containers-if-base-images-are-updated – lvthillo

+0

@ lorenzvth7 हम्म, यह काफी हैकी लगता है । – vsjn3290ckjnaoij2jikndckjb

उत्तर

4

वहाँ डोकर हब

आप टैग की सूची प्राप्त करने में सक्षम होना चाहिए के लिए एक API available, और वहाँ से प्रकट विवरण


संपादित

मैं कुछ खुदाई किया चारों ओर, ऐसा लगता है कि वे छवि के किसी भी प्रकार के चेकसम का पर्दाफाश नहीं करते हैं, यह प्रकट होता है या परतें जो इसे लिखती हैं।

मुझे मिली सबसे नज़दीकी चीज़ निर्माण की तारीख है ... जो कि अगर आप कुछ दूरस्थ रूप से सुरक्षित बनाने की कोशिश कर रहे हैं तो मैं इसका सुझाव नहीं दूंगा।

वैसे भी, आप पहुंच टोकन पहले

curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:library/ubuntu:pull" 

निकालने प्रतिक्रिया से टोकन प्राप्त करने की जरूरत है, तो आप इतिहास वस्तु में

curl --header "Authorization: Bearer $TOKEN" https://index.docker.io/v2/library/ubuntu/manifests/latest 

नज़र एक छवि संस्करण प्रकट लोड कर सकते हैं जेसन लौटने के बाद, आपको संपत्ति मिलेगी।

तो फिर तुम साथ

docker inspect --format "{{json .Created}}" ubuntu:latest 

दो की तुलना करें और दूर चापलूसी अपने स्थानीय छवि बनाई तारीख प्राप्त कर सकते हैं ...

+0

तो आपका सुझाया गया समाधान वास्तव में क्या होगा? एक निश्चित अंतराल को घुमाएं और परिणाम को स्थानीय छवि से तुलना करें? – vsjn3290ckjnaoij2jikndckjb

+0

हाँ, यह विचार (या था) विचार है। मैंने कुछ अतिरिक्त जानकारी के साथ उत्तर अपडेट किया ... – alebianco

+0

उत्तर के लिए धन्यवाद। ठीक है, अब तक सभी सुझाए गए उत्तरों तोड़ने के लिए प्रवण हैं, इसलिए ऐसा लगता है कि अभी तक ऐसा करने का एक अच्छा तरीका नहीं है। यह देखने के लिए डॉकर रेपो में एक समस्या खुल गई है कि यह जानबूझकर गायब विशेषता है: https://github.com/docker/docker/issues/30906 – vsjn3290ckjnaoij2jikndckjb

4

आप डोकर हब का उपयोग कर रहे आप एक Weebhook इस्तेमाल कर सकते हैं डोकर मेजबान सूचित करने के लिए तो एक अद्यतन के बारे में, और उस पर कार्रवाई करें।

वीबूक का उपयोग करना इसे करने का "सरल" तरीका होगा (मुझे लगता है) अन्यथा आपको डॉकर पुल में कुछ प्रकार की क्रॉलिंग करना होगा या जैसा कि @ हैबियनको द्वारा कुछ हैश या बिल्ड/निर्माण तिथियों की तुलना में समझाया जाएगा।

यहाँ इसके बारे में डॉक्स है: https://docs.docker.com/docker-hub/webhooks/

+0

तो मूल रूप से 'खींचना' चाहे कंटेनर पुराना हो या नहीं, आसानी से करने योग्य नहीं है, और सबसे अच्छा वर्तमान समाधान किसी बिल्ड सर्वर या किसी समान चीज़ से अधिसूचना को धक्का देना है। अजीब बात है कि पूर्व कार्यक्षमता मौजूद नहीं है। – vsjn3290ckjnaoij2jikndckjb

+0

आप हमेशा 'डॉकर को अपनी/छवि: टैग' खींच सकते हैं, और मूल्यांकन कर सकते हैं कि छवि बदल गई है, और फिर पुराने कंटेनर को हटाएं और अपडेट की गई छवि के साथ एक नया चलाएं ... सच होने के लिए मैं इसका उपयोग नहीं करता डॉकर हब webhook या किसी भी प्रकार की अद्यतन जांच करें, मैं डिप्लॉयबॉट या अन्य तैनाती सेवा का उपयोग करता हूं जो सर्वर को तैनात कर देगा जब गिटहब या बिटबकेट ने मास्टर में बदलाव के बारे में उसे सूचित किया –

1

मैं एक क्रॉलर कि जाँच करता है के साथ इस मुद्दे का हल या तो Dockerfile सीधे या एक from स्ट्रिंग।

मैंने सब कुछ एक डॉकर छवि में बैक किया जो docker hub में पाया जा सकता था।

मैं बस अपनी गिटलैब सीआई पाइपलाइन में छवि चलाता हूं।यदि मूल छवि पुरानी है तो सभी नए संस्करणों को प्रिंट करता है ताकि आप आसानी से टैग चुन सकें।

लिंक: https://hub.docker.com/r/olafnorge/docker-image-crawler/

संबंधित मुद्दे