Nextflow नहीं खींचता "नवीनतम" Docker छवि

Dec 14 2020

मैं दो वीएम चला रहा हूं। एक वीएम का उपयोग नेक्स्टफ्लो चलाने के लिए किया जाता है, दूसरे वीएम पर जेनकींस बिल्ड सर्वर होता है। जेनकिन्स नई डॉकर छवियों के निर्माण और हमारी निजी गूगल कंटेनर रजिस्ट्री में नई डॉकर छवियों को आगे बढ़ाने के लिए जिम्मेदार है।

मेरी nextflow.configफ़ाइल कुछ इस तरह दिखती है:

process {
    withLabel: awesome_image {
        container = "eu.gcr.io/best-project-1234/coolest_os:latest"
    }
}

जेनकिंस सर्वर का उपयोग करके एक नई छवि बनाने के बाद मैं एक नई अगली स्क्रिप्ट चला रहा था और मैंने देखा कि अगली छवि अभी भी पुरानी छवि का उपयोग कर रही थी। कुछ शोध के बाद (https://stackoverflow.com/a/58539792/1820480), मुझे एहसास हुआ कि यह इस तथ्य के साथ करना है कि मैं latestटैग का उपयोग कर रहा हूं , और चूंकि पहले से ही एक छवि है जिसे अगली फ़्लो वीएम पर नवीनतम कहा जाता है, अगलाफ्लो उस का उपयोग करता है और रजिस्ट्री की जांच करने से परेशान नहीं होता है।

प्रश्न: मैं यह कैसे सुनिश्चित कर सकता हूं कि अगली बार चलने से पहले, यह नई छवियों के लिए रजिस्ट्री की जांच करता है? या, क्या कोई स्क्रिप्ट / प्रोग्राम है जिसे मैं वीएम पर चला सकता हूं जो रजिस्ट्री की जांच करता है (अगले प्रवाह के बजाय)?

धन्यवाद।

जवाब

1 Steve Dec 14 2020 at 21:40

Nextflow सिर्फ एक कंटेनर का उपयोग करके आपकी कमांड चलाता है docker run। यदि आप एक ऐसी छवि निर्दिष्ट करते हैं जिसे आपने अभी तक नहीं खींचा है, docker runतो सबसे पहले docker pullछवि को डाउनलोड / स्थानीय करने के लिए करेंगे । नई छवियों के लिए फिर से रजिस्ट्री की जांच करने के लिए, आपको बस docker pullनेक्स्टफ्लो चलाने से पहले यह सुनिश्चित करना होगा कि आप (प्रत्येक छवि के लिए) कॉल करें । यदि आप इसके बजाय नई छवियों के लिए रजिस्ट्री की जांच करना चाहते हैं, तो हर बार जब कोई प्रक्रिया होती है, तो कृपया नीचे देखें।

कुछ शोधों के बाद, यह नवीनतम डॉकर क्ली (v20.10.0) जैसा दिखता है, अब कंटेनर पर चलने वाले पुल व्यवहार को संशोधित करने के लिए एक झंडा है:

--pull string   Pull image before running ("always"|"missing"|"never") (default "missing")

यह अच्छा है क्योंकि इसका मतलब है कि अब यह आपके माध्यम से संभव होना चाहिए nextflow.config:

docker {
    enabled = true
    runOptions = '--pull=always'
}

लेकिन इससे docker pullप्रत्येक प्रक्रिया के लिए ओवरहेड करने का ओवरहेड होगा और जब नई छवियां आपकी रजिस्ट्री में धकेल दी जाती हैं, तो इसका मतलब हो सकता है कि आपके वर्कफ़्लो निष्पादन के दौरान कुछ प्रक्रियाओं को अलग-अलग कंटेनर मिलें। यह एक चिंता का विषय नहीं हो सकता है, अगर आपको केवल 'नवीनतम' कंटेनरों की आवश्यकता है और प्रतिलिपि प्रस्तुत करने योग्यता की परवाह नहीं है।