Docker परिचय
Tim Sangster
Software Engineer @ DataCamp
FROM, RUN, और COPY फाइल सिस्टम के ज़रिए इंटरैक्ट करते हैं.
COPY /projects/pipeline_v3/start.sh /app/start.sh
RUN /app/start.sh
कुछ निर्देश सीधे दूसरों को प्रभावित करते हैं:
WORKDIR: अगले सभी निर्देशों के लिए वर्किंग डायरेक्टरी बदलता हैUSER: अगले सभी निर्देशों के लिए यूज़र बदलता हैसभी paths को फाइल सिस्टम के root से शुरू करना:
COPY /projects/pipeline_v3/ /app/
लंबे paths के साथ काम करते समय अव्यवस्थित हो जाता है:
COPY /projects/pipeline_v3/ /home/my_user_with_a_long_name/work/projects/app/
वैकल्पिक रूप से, WORKDIR उपयोग करें:
WORKDIR /home/my_user_with_a_long_name/work/projects/
COPY /projects/pipeline_v3/ app/
हर कमांड के लिए पूरा path देने के बजाय:
RUN /home/repl/projects/pipeline/init.sh
RUN /home/repl/projects/pipeline/start.sh
WORKDIR सेट करें:
WORKDIR /home/repl/projects/pipeline/
RUN ./init.sh
RUN ./start.sh
पूरा path देने के बजाय:
CMD /home/repl/projects/pipeline/start.sh
WORKDIR सेट करें:
WORKDIR /home/repl/projects/pipeline/
CMD start.sh
ओवरराइड किया गया कमांड भी WORKDIR में ही चलेगा:
docker run -it pipeline_image start.sh
$$
सर्वोत्तम प्रथा
Ubuntu -> डिफ़ॉल्ट रूप से root
FROM ubuntu --> डिफ़ॉल्ट रूप से Root यूज़र
RUN apt-get update --> root के रूप में रन
USER Dockerfile निर्देश:
FROM ubuntu --> डिफ़ॉल्ट रूप से Root यूज़र
USER repl --> यूज़र repl पर बदलता है
RUN apt-get update --> repl के रूप में रन
Dockerfile में यूज़र repl सेट करना:
FROM ubuntu --> डिफ़ॉल्ट रूप से Root यूज़र
USER repl --> यूज़र repl पर बदलता है
RUN apt-get update --> repl के रूप में रन
कंटेनर भी repl यूज़र से शुरू होंगे:
docker run -it ubuntu bash
repl@container: whoami
repl
| उपयोग | Dockerfile निर्देश |
|---|---|
| मौजूदा वर्किंग डायरेक्टरी बदलें | WORKDIR <path> |
| मौजूदा यूज़र बदलें | USER <user-name> |
Docker परिचय