सुरुकर्ताहरूका लागि: Dockerfile बाट Ubuntu वातावरण निर्माण | आधारभूत Python गाइड

目次

1. परिचय

Docker र Dockerfile भनेको के हो?

हालका वर्षहरूमा, विकास वातावरणको निर्माण र एप्लिकेसनको डिप्लोयलाई कुशल बनाउने माध्यमको रूपमा,Dockerले द्रुत रूपमा लोकप्रियता प्राप्त गरेको छ। Docker ले एप्लिकेसन र यसको निर्भरता वातावरणलाई एउटा “कन्टेनर” को रूपमा प्याकेज화 गर्दछ, जसले कुनै पनि ठाउँमा समान वातावरणमा चलाउन सकिन्छ भन्ने विशेषता बोकेको छ। यो Docker कन्टेनरको निर्माणको लागि, “Dockerfile” भन्ने डिजाइन ब्लूप्रिन्ट आवश्यक पर्छ। Dockerfile ले आधारभूत OS इमेजको निर्देशन, स्थापना गर्ने सफ्टवेयर, वातावरण चरहरूको सेटिङ आदि वर्णन गर्ने टेक्स्ट फाइल हो। विकासकर्ताहरूले यो फाइल प्रयोग गरेर, कस्टमाइज्ड वातावरणलाई स्वचालित रूपमा निर्माण गर्न सक्छन्।

Ubuntu लाई आधार बनाउने कारण

Dockerfile सिर्जना गर्दा, पहिले आधारभूत OS इमेज निर्दिष्ट गर्न आवश्यक छ। ती मध्ये विशेष रूपमा लोकप्रियUbuntuहो। Ubuntu Debian आधारित Linux डिस्ट्रिब्युसन हो, जसमा प्रयोग गर्न सजिलो र धेरै प्याकेजहरूबाट लचिलो वातावरण निर्माण सम्भव छ। Ubuntu लाई आधार बनाएको Dockerfile मा निम्न लाभहरू छन्:
  • धेरै आधिकारिक र सामुदायिक दस्तावेजहरू उपलब्ध छन्, जसले सिकाइ लागत कम छ
  • धेरै प्याकेज र टुलहरू APT बाट सजिलै स्थापना गर्न सकिन्छ
  • हल्का मिनिमल इमेजहरू (ubuntu:20.04, ubuntu:24.04 आदि) आधिकारिक रूपमा प्रदान गरिएका छन्

यो लेखको उद्देश्य र लक्षित पाठक

यो लेखमा, “Dockerfile Ubuntu” कीवर्डलाई विषय बनाएर, Ubuntu आधारित Dockerfile को निर्माण विधिबारे, नौसिखियाहरूलाई पनि बुझ्ने गरी व्याख्या गर्दै जानेछौं। विशेष रूपमा, Dockerfile को आधारभूत संरचनाबाट, वास्तवमा Ubuntu वातावरण निर्माण गर्ने चरणहरू, थप Python जस्ता एप्लिकेसन वातावरणको स्थापना उदाहरण, र सामान्य त्रुटिहरू र तिनको समाधानसम्मलाई व्यापक रूपमा प्रस्तुत गर्नेछौं। यस्ता व्यक्तिहरूलाई सिफारिस गरिएको सामग्री हो:
  • पहिलो पटक Dockerfile प्रयोग गरेर वातावरण निर्माण गर्न चाहनेहरू
  • Ubuntu मा विकास वातावरणलाई उच्च पुनरावृत्ति सहित बनाउन चाहनेहरू
  • समस्या समयको समाधानसम्म समावेश गरेर ज्ञान गहिरो बनाउन चाहनेहरू

2. Dockerfile को आधारभूत संरचना

Dockerfile भनेको के हो? यसको भूमिका बुझौं

DockerfileDocker इमेजहरू सिर्जना गर्नका लागि नुस्खा जस्तै हो। विशेष रूपमा, कुन आधार OS प्रयोग गर्ने, कस्तो सफ्टवेयर स्थापना गर्ने, र कस्तो सेटिङ गर्ने भन्ने वर्णन गर्ने टेक्स्ट फाइल हो। यो फाइललाई आधार मानेर,docker buildकमान्ड चलाएर, पुनरावृत्ति योग्य विकास वातावरण वा एप्लिकेसन चलाउने वातावरण सजिलै निर्माण गर्न सकिन्छ। Dockerfile प्रयोग गर्ने फाइदाहरू:
  • वातावरण निर्माणको स्वचालितीकरण (हातले काम दोहोर्याउनु पर्दैन)
  • एकभन्दा बढी व्यक्तिहरूले विकास गर्दा वातावरणको भिन्नता हट्छ
  • CI/CD पाइपलाइनमा पनि सजिलै समावेश गर्न सकिन्छ

Dockerfile मा सामान्यतया प्रयोग हुने आधारभूत कमान्डहरू (डाइरेक्टिभहरू)

Dockerfile मा धेरै कमान्डहरू (डाइरेक्टिभहरू) छन्, तर तलका प्रतिनिधिमूलक छन्। यिनीहरूलाई उपयुक्त रूपमा जोडेर, Ubuntu आधारित Dockerfile बनाउँदै जान्छौं।
कमान्डविवरण
FROMआधार Docker इमेज निर्दिष्ट गर्दछ। उदाहरण: FROM ubuntu:24.04
RUNशेल कमान्ड चलाउँछ। प्याकेज स्थापनाका लागि प्रयोग हुन्छ
COPYस्थानीय फाइलहरूलाई इमेज भित्र कपी गर्दछ
ADDCOPY सँग मिल्दोजुल्दो तर, URL बाट प्राप्त गर्ने वा आर्काइभ विस्तार पनि सम्भव
WORKDIRकार्य डाइरेक्टरी निर्दिष्ट गर्दछ
ENVवातावरण चरहरू सेट गर्दछ
CMDकन्टेनर सुरु हुँदा चल्ने कमान्ड परिभाषित गर्दछ (ओभरराइट गर्न सकिन्छ)
ENTRYPOINTCMD सँग मिल्दोजुल्दो तर, जबरजस्ती चल्ने कमान्ड परिभाषित गर्दछ

Ubuntu आधारित Dockerfile को न्यूनतम उदाहरण

तल Ubuntu लाई आधार मानेको अत्यन्त आधारभूत Dockerfile को उदाहरण छ।
FROM ubuntu:24.04

RUN apt-get update && apt-get install -y 
    curl 
    vim

CMD ["/bin/bash"]
यो Dockerfile ले Ubuntu 24.04 लाई आधार मानेर,curlvimभन्ने दुई युटिलिटीहरू स्थापना गर्दछ, र अन्तमा bash शेल सुरु गर्ने संरचना छ।

Ubuntu को ट्याग चयन बारे

Ubuntu को Docker इमेजDocker Hub को आधिकारिक रिपोजिटरीमा प्रकाशित छ।ubuntu:latestनिर्दिष्ट गर्दा नवीनतम संस्करण प्रयोग हुन्छ, तरसंस्करणलाई स्पष्ट रूपमा फिक्स गर्नु सिफारिस गरिन्छ। उदाहरणका लागि:
  • ubuntu:22.04 (LTS: दीर्घकालीन समर्थन संस्करण, स्थिरता प्राथमिकता)
  • ubuntu:24.04 (नवीनतम LTS उम्मेदवार, कार्यक्षमता प्राथमिकता)
उद्देश्य अनुसार, स्थिरता वा नयाँ कार्यक्षमताहरू मध्ये कुनलाई प्राथमिकता दिने विचार गरौं।

3. अभ्यास: Ubuntu आधारित Dockerfile निर्माण

Ubuntu वातावरणमा आवश्यक प्याकेजहरू स्थापना गर्नुहोस्

Dockerfile प्रयोग गरेर Ubuntu वातावरण निर्माण गर्दा, धेरै अवस्थामाथप प्याकेजहरूस्थापना गर्न आवश्यक हुन्छ। उदाहरणका लागि, विकास वातावरण तयार पार्न निम्न जस्ता युटिलिटीहरू प्रायः प्रयोग गरिन्छ:
  • curl: फाइल प्राप्ति वा API जाँचका लागि
  • vim: सरल टेक्स्ट सम्पादक
  • git: संस्करण व्यवस्थापन उपकरण
  • build-essential: C/C++ को निर्माणका लागि आवश्यक आधारभूत उपकरण समूह
Dockerfile मा यीहरूलाई स्थापना गर्नRUNआदेश प्रयोग गर्नुहोस्।
FROM ubuntu:24.04

RUN apt-get update && apt-get install -y 
    curl 
    vim 
    git 
    build-essential
apt-get updateलाई पहिले निष्पादन गरेर, नवीनतम प्याकेज सूची प्राप्त गरेपछि स्थापना गर्न सकिन्छ।

गैर-संवादात्मक स्थापनाको सेटिङ

Ubuntu मा,apt-get installसमयमा प्रयोगकर्ता इनपुट आवश्यक पर्न सक्छ, तर Docker को निर्माण प्रक्रियामा संवादात्मक सञ्चालन सम्भव छैन। त्यसैले निम्न अनुसार वातावरण चर सेट गरेर,गैर-संवाद मोडमा स्थापना गर्न सिफारिस गरिन्छ।
ENV DEBIAN_FRONTEND=noninteractive
यसले, प्याकेज सेटिङ समयमा देखिने “क्षेत्रीय सेटिङ” जस्ता इनपुटहरूलाई छोडेर, सुचारु रूपमा स्थापना अघि बढाउँछ।

अनावश्यक क्यास हटाएर हल्का बनाउने

APT प्रयोग गर्दा, डाउनलोड गरिएका अस्थायी फाइलहरू (क्यास) इमेज भित्र रहन्छन्, र अन्तिम Docker इमेज भारी हुन्छ। निम्न अनुसार क्यास हटाएर, इमेज आकार घटाउन सकिन्छ।
RUN apt-get update && apt-get install -y 
    curl 
    vim 
    && rm -rf /var/lib/apt/lists/*
यसरी,एकाधिक कमान्डहरूलाई एउटा RUN वाक्यमा समेट्नेले, अनावश्यक तहहरूको वृद्धि रोक्न सकिन्छ।

सर्वोत्तम अभ्यासहरू: Dockerfile को व्यवस्था

वास्तविक विकास स्थलमा, निम्न जस्ताDockerfile लेखन सम्बन्धी सर्वोत्तम अभ्यासहरूसिफारिस गरिन्छ:
  • RUN आदेशहरूलाई सकेसम्म समेटेर, तह संख्यालाई घटाउने
  • ENV मा स्पष्ट रूपमा संस्करण वा सेटिङ परिभाषित गर्ने
  • टिप्पणी प्रयोग गरेर प्रक्रियाको उद्देश्य स्पष्ट लेख्ने
  • अनावश्यक फाइलहरू नराख्न rm वा --no-install-recommends प्रयोग गर्ने
उदाहरण:
RUN apt-get update && apt-get install -y --no-install-recommends 
    curl 
    git 
    && rm -rf /var/lib/apt/lists/*
यसरी गर्दा,अझ हल्का र मर्मत गर्न सजिलो Dockerfileनिर्माण गर्न सकिन्छ।

4. Docker छविको निर्माण र जाँच

Dockerfile बाट Docker छवि निर्माण गर्ने

Dockerfile लेखेपछि, अर्को चरणDocker छविको निर्माणहो। योdocker buildकमान्ड प्रयोग गरेर गरिन्छ। Dockerfile रहेको डाइरेक्टरीमा, निम्न कमान्ड चलाउनुहोस्।
docker build -t my-ubuntu-image .
  • -t विकल्पले छविमा नाम (ट्याग) दिन्छ। उदाहरणमा my-ubuntu-image नाम दिइएको छ।
  • . ले Dockerfile रहेको हालको डाइरेक्टरीलाई जनाउँछ।
यो कमान्ड चलाउँदा, Docker ले Dockerfile को निर्देशनहरूलाई क्रममा पढ्छ र त्यसअनुसार नयाँ छवि निर्माण गर्छ।

निर्माण गरिएको Docker छविको जाँच

छवि निर्माण सम्पन्न भएपछि, निम्न कमान्डले जाँच गर्न सकिन्छ।
docker images
यसले स्थानीयमा रहेका Docker छविहरूको सूची देखाउँछ, र निम्न जानकारीहरू जाँच गर्न सकिन्छ:
  • REPOSITORY (छवि नाम)
  • TAG (ट्याग)
  • IMAGE ID (अनौठो पहिचानकर्ता)
  • CREATED (निर्माण मिति)
  • SIZE (आकार)
उदाहरण:
REPOSITORY        TAG       IMAGE ID       CREATED          SIZE
my-ubuntu-image   latest    abcd1234abcd   5 minutes ago    189MB
यसरी, निर्माण गरिएको छवि सामान्य रूपमा दर्ता भएको जाँच गर्न सकिन्छ।

Docker कन्टेनर सुरु गरेर कार्य जाँच गर्ने

निर्माण गरिएको छवि सही रूपमा कार्य गर्छ कि गर्दैन जाँच गर्न,Docker कन्टेनर सुरुगरौं। निम्न जस्तो कमान्ड प्रयोग गर्नुहोस्।
docker run -it my-ubuntu-image
  • -it विकल्प निर्दिष्ट गर्दा, अन्तर्क्रियात्मक मोडमा टर्मिनल सुरु गर्न सकिन्छ।
  • सामान्य रूपमा सुरु भएमा, कन्टेनर भित्रको bash प्रोम्प्ट देखिन्छ, र Ubuntu वातावरणमा लगइन भएको जस्तो अवस्था हुन्छ।
कन्टेनर भित्र निम्न जस्ता कमान्डहरू चलाएर, स्थापना गरिएका उपकरणहरू सही रूपमा कार्य गर्छन् कि गर्दैनन् जाँच गर्न सकिन्छ:
curl --version
vim --version
समस्या नभएमा, Dockerfile को वर्णन सफल छ।

अनावश्यक छवि वा कन्टेनरहरूको सफाई

निर्माण वा प्रयोगहरू दोहोर्याउँदा, स्थानीयमा अनावश्यक Docker छवि वा कन्टेनरहरू बाँकी रहन सक्छन्। नियमित रूपमा निम्न जस्ता कमान्डहरूले सफाई गर्न सिफारिस गरिन्छ।
  • रोकिएका कन्टेनरहरूको हटाउने:
docker container prune
  • अप्रयुक्त छविहरूको हटाउने:
docker image prune
  • सबै अप्रयुक्त डाटाहरू हटाउने (सावधानी!):
docker system prune
यी कार्यहरूबाट,डिस्क स्थानको बचत र समस्या रोकथामहुन्छ।

5. प्रयोग: Python वातावरणको निर्माण

Ubuntu-आधारित Dockerfile मा Python प्रयोगयोग्य बनाउने

Dockerfile प्रयोग गरेर Ubuntu वातावरण निर्माण गर्दा,Python को कार्यान्वयन वातावरण थपेर, विकास, प्रमाणीकरण, मेसिन लर्निङ आदि व्यापक उपयोगहरूमा सामना गर्न सकिन्छ। Ubuntu मा मूल रूपमा Python स्थापित भएको हुन सक्छ, तर संस्करण व्यवस्थापन र प्याकेज व्यवस्थापनको दृष्टिकोणबाट, आफैंले स्पष्ट रूपमा निर्माण गर्नु सामान्य हो।

apt प्रयोग गरेर Python स्थापना गर्ने विधि

सबैभन्दा सरल विधि APT प्याकेज प्रयोग गरेर Python स्थापना गर्नु हो। तल यसको उदाहरण छ:
FROM ubuntu:24.04

RUN apt-get update && apt-get install -y 
    python3 
    python3-pip 
    && rm -rf /var/lib/apt/lists/*
यो विधिमा, प्रणालीमा स्थापित स्थिर संस्करणको Python (सामान्यतया Python 3.10 वा 3.12 आदि) प्रयोग गर्न सकिन्छ। यसबाहेक,pipकमान्डले Python प्याकेजहरू थप्न पनि सम्भव छ।

pyenv प्रयोग गरेर Python को संस्करण व्यवस्थापन गर्ने

विशिष्ट Python संस्करण प्रयोग गर्न चाहनुहुन्छ वा धेरै संस्करणहरू बीच स्विच गर्न चाहनुहुन्छ भने,pyenvप्रयोग गर्नु सुविधाजनक हुन्छ। तल Dockerfile मा pyenv प्रयोग गरेर Python 3.11.6 स्थापना गर्ने एउटा उदाहरण छ:
FROM ubuntu:24.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y 
    git 
    curl 
    make 
    build-essential 
    libssl-dev 
    zlib1g-dev 
    libbz2-dev 
    libreadline-dev 
    libsqlite3-dev 
    wget 
    llvm 
    libncurses5-dev 
    libncursesw5-dev 
    xz-utils 
    tk-dev 
    libffi-dev 
    liblzma-dev 
    && rm -rf /var/lib/apt/lists/*

# pyenv को स्थापना
RUN git clone https://github.com/pyenv/pyenv.git ~/.pyenv

ENV PYENV_ROOT="$HOME/.pyenv"
ENV PATH="$PYENV_ROOT/bin:$PATH"

RUN echo 'eval "$(pyenv init --path)"' >> ~/.bashrc

# कुनै पनि Python संस्करण स्थापना गर्नुहोस्
RUN pyenv install 3.11.6 && pyenv global 3.11.6
यसरी गरेर, Python वातावरणलाई बढी लचिलो रूपमा निर्माण र व्यवस्थापन गर्न सकिन्छ।

requirements.txt प्रयोग गरेर प्याकेज व्यवस्थापन

वास्तविक परियोजनामा, धेरै अवस्थामा धेरै Python लाइब्रेरीहरू आवश्यक पर्छन्। यसलाई व्यवस्थापन गर्न प्रयोग हुनेrequirements.txtहो। पहिले, परियोजनाको रूट डाइरेक्टरीमाrequirements.txtफाइल तयार गर्नुहोस्:
flask==2.3.2
requests>=2.25.1
pandas
पछि Dockerfile मा निम्नानुसार वर्णन गर्नुहोस्:
COPY requirements.txt /app/requirements.txt
WORKDIR /app

RUN pip install --no-cache-dir -r requirements.txt
यसबाट, आवश्यक लाइब्रेरीहरूलाई एकैचोटि स्थापना गर्न सकिन्छ, र विकास वातावरणको पुनरावृत्ति बढ्छ।

सर्वोत्तम अभ्यासहरू

  • Python प्रयोग गर्दा, virtualenv वा venv ले भर्चुअल वातावरण निर्माण गर्दा, निर्भरता द्वन्द्वहरू रोक्न सजिलो हुन्छ।
  • क्यास हटाउने (--no-cache-dir) गरेर, Docker इमेजलाई हल्का बनाउन सकिन्छ।
  • Python प्याकेज स्थापना गर्नुअघि pip install --upgrade pip ले नवीनतम संस्करणमा राख्दा त्रुटिहरू रोक्न सकिन्छ।

6. सामान्य समस्याहरू र समाधानहरू

अनुमतिपत्र (अधिकार) त्रुटि

उदाहरण:

Permission denied
यो त्रुटि तब उत्पन्न हुन्छ जब प्रतिलिपि गरिएको फाइलमा कार्यान्वयन अनुमति हुँदैन वा स्क्रिप्टको मालिक वा कार्यान्वयन प्रयोगकर्ता उपयुक्त हुँदैन।

समाधान:

  • फाइललाई कार्यान्वयन योग्य बनाउनुहोस्:
  RUN chmod +x script.sh
  • आवश्यकताअनुसार, प्रयोगकर्तालाई परिवर्तन गर्नुहोस्:
  RUN chown root:root /path/to/file

प्याकेज फेला पार्न सकिँदैन, वा स्थापना गर्न सकिँदैन

उदाहरण:

E: Unable to locate package xxx
यो त्रुटि तब उत्पन्न हुन्छ जबapt-get updateकार्यान्वयन गरिएको छैन वा निर्दिष्ट प्याकेज नाम गलत छ।

समाधान:

  • apt-get update लाई install भन्दा पहिले अवश्य लेख्नुहोस्:
  RUN apt-get update && apt-get install -y curl
  • प्याकेज नाम जाँच गर्नुहोस् र टाइपिङ त्रुटि छैन भनेर हेर्नुहोस्

नेटवर्क सम्बन्धी त्रुटि

उदाहरण:

Temporary failure resolving 'deb.debian.org'
यस्तो त्रुटि निर्माणको क्रममा DNS समाधान राम्रोसँग काम नगरेको अवस्थामा हुन्छ।

समाधान:

  • Docker डेमनलाई पुन: सुरु गर्दा सुधार हुन सक्छ:
  sudo systemctl restart docker
  • Docker को DNS सेटिङ पुनरावलोकन गर्नुहोस् (/etc/docker/daemon.json मा DNS निर्दिष्ट थप्नुहोस्):
  {
    "dns": ["8.8.8.8", "8.8.4.4"]
  }

क्यासको प्रभावले पुरानो अवस्थामा नै निर्माण

Docker ले गतिलाई तीव्र बनाउनको लागिलेयरहरूको क्यासप्रयोग गर्दछ। यसको परिणामस्वरूप, Dockerfile परिवर्तन गरे पनि अपेक्षित रूपमा निर्माण नहुन सक्छ।

समाधान:

  • क्यासलाई असक्षम बनाएर पुन: निर्माण गर्नुहोस्:
  docker build --no-cache -t my-image .

कन्टेनर भित्रको सुरु कमान्ड कार्यान्वयन नहुनु वा तुरुन्तै समाप्त हुनु

कारण:

  • CMD वा ENTRYPOINT मा निर्दिष्ट कमान्डमा त्रुटि छ
  • CMD मा ["/bin/bash"] आदि निर्दिष्ट गरे पनि, अन्तर्क्रियात्मक नभए तुरुन्तै समाप्त हुन्छ

समाधान:

  • कन्टेनरलाई डिबगका लागि सुरु गरेर जाँच गर्नुहोस्:
  docker run -it my-image /bin/bash
  • CMDENTRYPOINT को भिन्नता बुझ्नुहोस् र उद्देश्य अनुसार प्रयोग गर्नुहोस्
यी समस्याहरूको अनुभवले Dockerfile को डिजाइन क्षमता निश्चित रूपमा सुधार्छ। समस्या भोग्दा, त्रुटि सन्देशलाई शान्तपूर्वक पढ्नुहोस् र कुन लेयर वा कुन कमान्ड कारण हो भनेर सावधानीपूर्वक अनुसन्धान गर्नुहोस्।

7. सारांश

Ubuntu आधारित Dockerfile सिर्जनाका बुँदाहरू पुन: पुष्टि

यो लेखमा,Dockerfile प्रयोग गरेर Ubuntu वातावरण निर्माण गर्ने विधिबारे, आधारभूत देखि उन्नत सम्म चरणबद्ध रूपमा व्याख्या गरिएको छ। यहाँ, महत्वपूर्ण बुँदाहरूलाई पुन: व्यवस्थित गरौं।
  • Dockerfile को आधारभूत संरचना लाई बुझ्नु पहिलो चरण हो FROM, RUN, CMD, ENV जस्ता आदेशहरूलाई संयोजन गरेर वातावरण निर्माणलाई स्वचालित गर्न सकिन्छ।
  • Ubuntu स्थिरता र लचकताको उच्च आधारभूत इमेज हो धनी प्याकेजहरू, व्यापक प्रयोगकर्ता समूह, LTS संस्करणको अस्तित्वका कारण, विकास वातावरणको आधारको रूपमा उपयुक्त छ।
  • व्यावहारिक प्याकेज व्यवस्थापन मार्फत, आवश्यक उपकरणहरू वा लाइब्रेरीहरू स्थापना गर्न सकिन्छ apt-get को प्रयोग विधि वा क्यास हटाउने, गैर-संवादात्मक स्थापनाजस्ता कुराहरू कुञ्जी बन्छन्।
  • Python जस्ता व्यावहारिक वातावरण निर्माण पनि Dockerfile मार्फत सम्भव छ pyenv वा pip, requirements.txt जस्ता उपकरणहरूसँग, पुनरावृत्तिको उच्च विकास वातावरण प्राप्त गर्न सकिन्छ।
  • समस्या समाधान क्षमता स्थिर सञ्चालनसँग सीधा जोडिएको छ अनुमतिहरू, नेटवर्क, निर्माण क्यास जस्ता ठोक्किने बुँदाहरूलाई बुझेर, विकास दक्षतालाई ठूलो मात्रामा सुधार गर्न सकिन्छ।

Dockerfile सिकाइको अर्को चरण

Dockerfile ह्यान्डल गर्न सक्ने भएपछि, विकास मात्र होइन, परीक्षण-उत्पादन वातावरणमा डिप्लोयमेन्ट आदि व्यापक प्रयोगहरूमा सामना गर्न सकिन्छ। भविष्यको सिकाइको लागि, निम्नलिखित विषयहरूमा अघि बढ्नु राम्रो हुन्छ।
  • Docker Compose प्रयोग गरेर बहु-कन्टेनर संरचनाको व्यवस्थापन
  • CI/CD उपकरणहरू (GitHub Actions, GitLab CI आदि) सँगको एकीकरण
  • Kubernetes जस्ता कन्टेनर ओरकेस्ट्रेसन उपकरणहरू सँगको अन्तरक्रिया

आधिकारिक दस्तावेजहरू- सन्दर्भ लिङ्कहरू

8. FAQ (बारम्बार सोधिने प्रश्नहरू)

Q1. Dockerfile मा Ubuntu को कुन संस्करण छान्नु उपयुक्त हुन्छ?

A1.सामान्यतया, स्थिरता र दीर्घकालीन समर्थनलाई प्राथमिकता दिने अवस्थामाLTS (दीर्घकालीन समर्थन) संस्करणछान्नु सामान्य हो। उदाहरणका लागिubuntu:22.04वाubuntu:20.04धेरै विकास वातावरणमा प्रयोग हुन्छन्, र ५ वर्षको समर्थन अवधि भएकोले सुरक्षित रूपमा प्रयोग गर्न सकिन्छ। अर्कोतर्फ, नयाँ प्याकेज वा भाषा संस्करण प्रयोग गर्न चाहनुहुन्छ भनेubuntu:24.04जस्ता नयाँ रिलिज छान्न सकिन्छ, तर पूर्व-परीक्षण सिफारिस गरिन्छ।

Q2. apt-get install मा “प्याकेज फेला परेन” भन्ने सन्देश किन आउँछ?

A2.सबैभन्दा सामान्य कारण भनेकोapt-get updateपूर्वमा नचलाएको हुन्छ। प्याकेज सूची अपडेट नगरी इन्स्टल प्रयास गर्दा पुरानो सूचीकै आधारमा सम्बन्धित प्याकेज फेला नपरी त्रुटि हुन्छ।सही लेखन उदाहरण:
RUN apt-get update && apt-get install -y curl
यसबाहेक, प्याकेज नामको गल्ती वा अप्रचलित प्याकेज नाम (उदाहरण:pythonहोइनpython3) मा पनि ध्यान दिनुहोस्।

Q3. Dockerfile मा वातावरण चरहरू कसरी सेट गर्ने?

A3.वातावरण चरहरूENVआदेश प्रयोग गरेर सेट गरिन्छ। यो बिल्ड समय र कन्टेनर चलाउँदा दुवैमा प्रभावी हुन्छ।उदाहरण:
ENV DEBIAN_FRONTEND=noninteractive
यो APT इन्स्टल गर्दा अन्तर्क्रियात्मक प्रोम्प्ट दबाउन प्रयोग हुने सामान्य सेटिङ हो। यसबाहेक, एप्लिकेसन सेटिङ वा API कुञ्जीहरू आदि Dockerfile भित्र सेट गर्दा पनि प्रयोग हुन्छ।

Q4. Dockerfile मा CMDENTRYPOINT को भिन्नता के हो?

A4.दुवैले कन्टेनर सुरु गर्दा चलाउने कमान्ड निर्दिष्ट गर्छन्, तर प्रयोग र व्यवहारमा भिन्नता छ।
वस्तुCMDENTRYPOINT
माथि लेख्न सकिने सम्भावनाdocker run को कमान्डले माथि लेख्न सकिन्छआधारभूत रूपमा माथि लेखिँदैन (तर्कको रूपमा)
उपयोगडिफल्ट चलाउने कमान्ड सेट गर्नुसधैं चलाउन चाहिने कमान्ड परिभाषित गर्नु
उदाहरण:
CMD ["python3", "app.py"]
# vs
ENTRYPOINT ["python3"]
CMD ["app.py"]
पछि उल्लेखित अवस्थामा,docker run my-image another_script.pyरूपमाCMDलाई तर्कको रूपमा पठाउन सकिन्छ।

Q5. Dockerfile सम्पादन गरे पनि परिवर्तन प्रतिबिम्बित हुँदैन। किन?

A5.Docker ले बिल्ड समयमा क्यास प्रयोग गर्छ, त्यसैले Dockerfile मा सानो परिवर्तन गरे पनि क्यास गरिएको तह नै प्रयोग हुने हुन सक्छ।समाधान:
docker build --no-cache -t my-image .
यसले क्यास बिना नयाँ बिल्ड हुन्छ र सबै परिवर्तनहरू प्रतिबिम्बित हुन्छन्।