हम WORKDIR
किसी निर्देशिका को कार्य निर्देशिका के रूप में सेट करने के लिए उपयोग कर सकते हैं Dockerfile
, लेकिन यदि हम सेट नहीं करते हैं तो डिफ़ॉल्ट मान क्या है?
जवाबों:
यह कहते हैं /
, इसलिए रूट निर्देशिका है
डिफ़ॉल्ट वास्तव /
में कहीं और के रूप में कहा गया है। हालांकि, यह ध्यान देने योग्य है कि आप लगभग कभी भी खाली डॉक इमेज ( FROM scratch
) से नहीं चलेंगे , इसलिए WORKDIR
यह संभव है कि आपके द्वारा उपयोग की जा रही बेस इमेज द्वारा सेट किया गया हो।
उदाहरण के लिए, https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.template के पास WORKDIR $CATALINA_HOME
, और https://github.com/dockerfile/ubuntu/bbb/master/Dockerfile है WORKDIR /root
। ( https://hub.docker.com/r/base/archlinux/~/dockerfile/WORKDIR
हालांकि उपयोग नहीं करता है ।)
इसलिए, अपना स्वयं का WORKDIR
स्पष्ट रूप से सेट करना सबसे अच्छा है ।
एक कंटेनर के भीतर बायनेरिज़ चलाने के लिए डिफ़ॉल्ट कार्यशील निर्देशिका रूट निर्देशिका ( /
) है, लेकिन डेवलपर डॉकरीफाइल वर्ककंड कमांड के साथ एक अलग निर्देशिका सेट कर सकता है। ऑपरेटर इसके साथ ओवरराइड कर सकता है:
-w="": Working directory inside the container
के रूप में वहाँ कोई उपयोगकर्ता नहीं हैं, लेकिन सिर्फ एक जन्मजात डॉकटर या कंटेनर में एक रूट सख्ती से बोल रहा है। इसलिए, हर परिवर्तन के लिए उस कंटेनर के लिए एक प्रतिबद्धता होगी जैसा कि इस लड़के ने कहा। इसलिए, जैसा कि आपने पूछा है कि काम करने वाला व्यक्ति /
डिफ़ॉल्ट रूप से मूल है और हर बार जब आप /bin/bash
इस तरह से निष्पादित करते हैं:
$docker exec -i -t 53f784fwer54 /bin/bash
एक चल रहे कंटेनर पर यह आपको /
रूट डायर में डाल देगा ।
/
गलत और अप्रासंगिक है। नए कंटेनर का डिफॉल्ट वर्कडिर इमेज के डिफॉल्ट वर्कडिर के समान होता है। उदाहरण के लिए, मैं अभी docker exec -ti <my_app> /bin/bash;
नई बैश प्रक्रिया में भाग गया pwd
, और मैं देखता हूं कि काम करने वाली निर्देशिका है /app
।
RUN pwd