मैं एक साधारण डॉकर छवि बनाने की कोशिश कर रहा हूं और फिर जेनकिंस पाइपलाइन का उपयोग करके इसके अंदर कमांड चला रहा हूं। मैं उलझन में हूं क्योंकि मैं अपने डॉकटर कंटेनर के बजाय अपने बिल्ड सर्वर पर कमांड निष्पादित कर रहा हूं। जब मैं निम्नलिखित को चलाकर अपने निर्मित कंटेनर के अंदर 'pwd' चलाता हूं:

node ('docker2') {
    docker.withRegistry('https://my-registry.com', 'my-creds') {

        stage ('Checkout SCM') {
            checkout scm
        }

        // Build Docker image from Dockerfile
        stage ('Build Docker Image') {
            def myImage = docker.build("my-image:${env.BUILD_ID}")

            myImage.inside {
                sh 'pwd'
            }
        }
    }
}

यह "/ होम/बिल्ड/वर्कस्पेस/डॉकर-बिल्ड-एंड-पुश" लौटाता है, जो प्रतीत होता है कि वह कार्यशील निर्देशिका है जिससे मैं अपना कंटेनर बना रहा हूं, कंटेनर के अंदर निर्देशिका नहीं।

इसके अलावा जब मैं अपने कंटेनर के अंदर "एमकेडीआईआर टेस्ट" चलाने की कोशिश करता हूं तो उसने मेरे बिल्ड सर्वर में एक परीक्षण निर्देशिका बनाई, कंटेनर नहीं। लेकिन जब मैं "होस्टनाम" चलाता हूं तो यह मेरे बिल्ड सर्वर का होस्टनाम नहीं लौटाता है, बल्कि संख्याओं की एक यादृच्छिक स्ट्रिंग देता है, ऐसा लगता है कि यह मेरे कंटेनर से आ रहा है ...

My Dockerfile अत्यंत सरल है और इसमें केवल "FROM अल्पाइन: नवीनतम" शामिल है।

ऐसा लगता है कि मेरे आदेश मेरे कंटेनर के अंदर चल रहे हैं, न कि मेरे बिल्ड सर्वर पर। मैं क्या गलत कर रहा हूं?

0
buffcat 24 अक्टूबर 2018, 08:31

1 उत्तर

सबसे बढ़िया उत्तर

जेनकिंस -v पैरामीटर का उपयोग करके आपके डॉकटर कंटेनर में कार्यक्षेत्र को माउंट करता है। इसलिए आप अपने बिल्ड सर्वर की निर्देशिका संरचना देखते हैं और यदि आप कोई फ़ाइल बनाते हैं तो यह वास्तव में कार्यक्षेत्र में बनाई जाती है।

आप अपने द्वारा बनाए गए लॉग में सटीक docker कमांड देखने में सक्षम होना चाहिए।

1
Michael 24 अक्टूबर 2018, 06:32