Ubuntu සමඟ Dockerfile: Docker රූප නිර්මාණය සඳහා ආරම්භක සිට උසස් දක්වා සම්පූර්ණ මාර්ගෝපදේශය

目次

1. විෂය පරිච්ඡේදය

Docker සහ Dockerfiles යනු කුමක්ද?

අලුත්ම වසර කිහිපය තුළ, Docker වේගයෙන් ජනප්‍රිය වී ඇත්තේ සංවර්ධන පරිසර සහ යෙදුම් යෙදීම සරල කිරීමේ කාර්යක්ෂම ක්‍රමයක් ලෙසයි. Docker යෙදුම් සහ ඒවායේ යැපීම් එකම ඒකකයකට ඇසුරුම් කරයි, එය “කන්ටේනර්” ලෙස හඳුන්වන අතර, විවිධ පරිසරවල ස්ථිරව ක්‍රියාත්මක වීමට ඉඩ සලසයි.

මෙම Docker කන්ටේනර් ගොඩනැගීම සඳහා, Dockerfile ලෙස හඳුන්වන නිර්මාණ සැලැස්මක් අවශ්‍ය වේ. Dockerfile යනු පදනම් මෙහෙයුම් පද්ධති රූපය, ස්ථාපිත මෘදුකාංග, පරිසර විචල්‍ය, සහ අනෙකුත් සැකසුම් විස්තර නිර්වචනය කරන පාඨ මාරුවකි. සංවර්ධකයින්ට එය භාවිතා කරමින් අභිරුචිකරණය කළ පරිසර ස්වයංක්‍රීයව ගොඩනැගිය හැකිය.

Ubuntu රූපය පදනම් ලෙස භාවිතා කිරීමේ හේතු මොනවාද?

Dockerfile එකක් නිර්මාණය කිරීමේදී, පළමු පියවර වන්නේ පදනම් මෙහෙයුම් පද්ධති රූපය තෝරාගැනීමයි. ලබාගත හැකි විකල්ප බොහෝමයක් අතර, Ubuntu ජනප්‍රියම ඒවායින් එකකි. Ubuntu යනු Debian මූලික Linux විතරණයකි, එහි පහසු භාවිතය සහ පුළුල් පැකේජ් පරිසරය මගින් සහාය දක්වන නමුත් සැකසුම් සඳහා නම් එහි පහසුකම් ඇත.

Ubuntu මූලික Dockerfiles කිහිපයක් වාසි ලබා දෙයි:

  • විස්තීර්ණ නිල සහ ප්‍රජා ලේඛන, අඩු ඉගෙනුම් වක්‍රයක් ඇති වීම
  • APT භාවිතයෙන් පැකේජ් සහ මෙවලම් පහසුවෙන් ස්ථාපනය කිරීම
  • නිලවශයෙන් සපයන ලද ලාභ සහ අවම රූප (උදා: ubuntu:20.04 සහ ubuntu:24.04 )

මෙම ලිපියේ අරමුණ සහ ඉලක්කගත ප්‍රේක්ෂකයින්

මෙම ලිපිය “Dockerfile Ubuntu” යන මූල පදය මත අවධානය යොමු කරමින්, ආරම්භකයින්ට පහසුවෙන් තේරුම් ගත හැකි ආකාරයෙන් Ubuntu මූලික Dockerfiles නිර්මාණය කරන්නේ කෙසේදැයි පැහැදිලි කරයි.

එය Dockerfile හි මූලික ව්‍යුහය සිට ආරම්භ වී Ubuntu පරිසරය ගොඩනැගීම සඳහා පියවරෙන් පියවර උපදෙස්, Python වැනි යෙදුම් පරිසර සැකසීමේ උදාහරණ, සහ සුලබ දෝෂ සමඟ ඒවායේ විසඳුම් ආවරණය කරයි.

මෙම ලිපිය නිර්දේශ කෙරේ:

  • Dockerfiles භාවිතයෙන් පරිසර ගොඩනැගීමට පළමු වර වන අයට
  • Ubuntu හි පුනරාවර්තන සංවර්ධන පරිසර නිර්මාණය කිරීමට අපේක්ෂා කරන සංවර්ධකයින්ට
  • තේරුම් ගැනීම ගැඹුරු කිරීමට අපේක්ෂා කරන ඕනෑම කෙනෙකුට, දෝෂ නිවැරීමේ තාක්ෂණයන් ඇතුළුව

2. Dockerfile හි මූලික ව්‍යුහය

Dockerfile යනු කුමක්ද සහ එහි භූමිකාව කුමක්ද?

Dockerfile යනු Docker රූප නිර්මාණය සඳහා සැලසුම් පොතක් වැනිය. එය භාවිතා කළ යුතු පදනම් මෙහෙයුම් පද්ධතිය, ස්ථාපිත කළ යුතු මෘදුකාංග, සහ පරිසර සැකසීම කෙසේදැයි නිර්වචනය කරයි.

මෙම ගොනුව මත පදනම්ව docker build පණිවිඩය ක්‍රියාත්මක කිරීමෙන්, ඔබට ඉහළ පුනරාවර්තන සංවර්ධන සහ ක්‍රියාකාරී පරිසර පහසුවෙන් නිර්මාණය කළ හැකිය.

Dockerfiles භාවිතා කිරීමේ වාසි:

  • ස්වයංක්‍රීය පරිසර සැකසුම (අතින් පුනරාවර්තනයට අවශ්‍යතාවයක් නැත)
  • කණ්ඩායම් සංවර්ධනයේ පරිසර অসමානතා ඉවත් කිරීම
  • CI/CD පයිප්ලයින්වලට පහසු ඒකාබද්ධ කිරීම

සුලබව භාවිතා වන Dockerfile උපදෙස්

Dockerfile එකක් බහු උපදෙස් (නිර්දේශ)වලින් සමන්විත වේ. පහත දැක්වෙන්නේ බොහෝමයක් භාවිතා වන ඒවායි. ඒවා සුදුසු ලෙස ඒකාබද්ධ කිරීමෙන්, ඔබට Ubuntu මූලික Dockerfile එකක් ගොඩනැගිය හැකිය.

InstructionDescription
FROMSpecifies the base Docker image (e.g., FROM ubuntu:24.04)
RUNExecutes shell commands, typically for installing packages
COPYCopies local files into the image
ADDSimilar to COPY, but also supports URLs and archive extraction
WORKDIRSets the working directory
ENVDefines environment variables
CMDDefines the default command executed at container startup (can be overridden)
ENTRYPOINTDefines a command that is always executed at container startup

අවම 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 රූපය පදනම් ලෙස භාවිතා කරයි, curl සහ vim උපකරණ ස්ථාපනය කරයි, සහ කන්ටේනරය ආරම්භ වන විට Bash shell එකක් ආරම්භ කරයි.

සුදුසු Ubuntu ටැගය තෝරාගැනීම

Ubuntu Docker රූප නිල Docker Hub ගබඩාවේ ප්‍රකාශයට පත් කර ඇත. ubuntu:latest නිර්දේශ කිරීමෙන් නවතම අනුවාදය භාවිතා වුවද, අනුවාදය පැහැදිලිව ස්ථිර කිරීම නිර්දේශ කෙරේ.

උදාහරණයක් ලෙස:

  • ubuntu:22.04 (LTS: දිගුකාලීන සහාය, ස්ථිරභාවය මත අවධානය)
  • ubuntu:24.04 (නවතම LTS, නව විශේෂාංග මත අවධානය)

ස්ථිරභාවය හෝ නව විශේෂාංග ඔබේ ප්‍රමුඛත්වය මත පදනම්ව අනුවාදය තෝරන්න.

3. ප්‍රායෝගික: Ubuntu මූලික Dockerfile එකක් නිර්මාණය කිරීම

Ubuntu පරිසරයේ අවශ්‍ය පැකේජ් ස්ථාපනය කිරීම

.Ubuntu පරිසරයක් Dockerfile එකක් භාවිතා කරමින් ගොඩනැගීමේදී, අතිරේක පැකේජ ස්ථාපනය කිරීම අවශ්‍ය විය හැක. උදාහරණයක් ලෙස, සංවර්ධන පරිසරයක් සකස් කරන විට පහත උපකරණ සාමාන්‍යයෙන් භාවිතා වේ:

  • 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 භාවිතා කරන විට, බාගත කරන තාවකාලික ගොනු (කෑෂ්) රූපයේ තුළ රැඳී පවතී, එමඟින් අවසාන ප්‍රමාණය වැඩි වේ. පහත පරිදි කෑෂ් ඉවත් කිරීමෙන් රූපයේ ප්‍රමාණය අඩු කළ හැක.

RUN apt-get update && apt-get install -y \
    curl \
    vim \
    && rm -rf /var/lib/apt/lists/*

බහු විධාන එකම RUN උපදෙස් තුළ එකතු කිරීමෙන්, අතිරේක රූප ස්ථර (layers) වර්ධනය වීමත් වැළැක්විය හැක.

Dockerfile ලිවීමේ හොඳ පුරුදු ක්‍රම

ප්‍රායෝගික සංවර්ධන පරිසරවල, පහත Dockerfile හොඳ පුරුදු ක්‍රම පුළුල් ලෙස නිර්දේශ කරයි:

  • RUN උපදෙස් හැකි තරම් එකට එකතු කර, ස්ථර ගණන අඩු කරන්න
  • ENV භාවිතා කර සංස්කරණය සහ සැකසුම් පැහැදිලිව නියම කරන්න
  • සෑම පියවරක්ම අරමුණ පැහැදිලි කිරීමට අදහස් (comments) එක් කරන්න
  • 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 විකල්පය රූපයට නාමයක් (tag) ලබා දේ. මෙහි උදාහරණය ලෙස රූපය 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

If these commands work correctly, your Dockerfile is properly configured.

භාවිත නොකළ රූප සහ කන්ටේනර් පිරිසිදු කිරීම

Repeated builds and experiments may leave unused Docker images and containers on your system. It is recommended to clean them up periodically using the following commands:

  • නවතා ඇති කන්ටේනර් ඉවත් කරන්න:
    docker container prune
    
  • භාවිත නොකළ රූප ඉවත් කරන්න:
    docker image prune
    
  • සියලු භාවිත නොකළ දත්ත ඉවත් කරන්න (අවධානයෙන් භාවිතා කරන්න):
    docker system prune
    

These operations help save disk space and prevent potential issues.

5. උසස්: Python පරිසරයක් ගොඩනැගීම

Ubuntu-අධාරිත Dockerfile එකේ Python සක්‍රිය කිරීම

When building an Ubuntu environment using a Dockerfile, adding a Python runtime environment enables a wide range of use cases, including development, testing, and machine learning. Although Python may already be installed on Ubuntu by default, it is common practice to explicitly configure it for better version and package management.

APT භාවිතා කර Python ස්ථාපනය කිරීම

The simplest approach is to install Python using APT packages. Below is an example:

FROM ubuntu:24.04

RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*

This method provides a stable system Python version (such as Python 3.10 or 3.12, depending on the Ubuntu release). You can also install additional Python packages using the pip command.

pyenv සමඟ Python අනුවාද කළමනාකරණය

If you need a specific Python version or want to switch between multiple versions, using pyenv is highly recommended.

The following example shows how to install Python 3.11.6 using pyenv in a Dockerfile:

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/*

# Install 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

# Install a specific Python version
RUN pyenv install 3.11.6 && pyenv global 3.11.6

This setup provides a flexible and well-controlled Python environment.

requirements.txt සමඟ පැකේජ කළමනාකරණය

Most real-world projects require multiple Python libraries. These dependencies are commonly managed using a requirements.txt file.

පළමුව, ඔබේ ව්‍යාපෘති මූලික (root) ෙහි 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

This allows all required libraries to be installed at once and significantly improves environment reproducibility.

හොඳ පුරුදු

  • Python භාවිතා කරන විට, virtualenv හෝ venv සමඟ වර්චුවල් පරිසරයක් සෑදීම අවශ්‍යතා අතර ගැටළු වැළැක්වීමට උපකාරී වේ.
  • --no-cache-dir වැනි කෑෂ් (cache) අක්‍රිය කිරීමේ විකල්ප භාවිතා කිරීම Docker රූපයේ ප්‍රමාණය අඩු කරයි.
  • පැකේජ ස්ථාපනයට පෙර pip install --upgrade pip ක්‍රියාත්මක කිරීම ස්ථාපන දෝෂ වැළැක්වීමට උපකාරී වේ.

6. පොදු ගැටළු සහ ගැටලු විසඳුම්

අවසර දෝෂ

උදාහරණය:

Permission denied

This error occurs when copied files lack execution permissions or when file ownership and execution users are misconfigured.

විසඳුම:

  • ගොනුව ක්‍රියාත්මක කළ හැකි ලෙස සකසන්න:
    RUN chmod +x script.sh
    
  • අවශ්‍ය නම් ගොනු හිමිකම වෙනස් කරන්න:
    RUN chown root:root /path/to/file
    

පැකේජය සොයාගත නොහැකි හෝ ස්ථාපන අසමත් වීම

උදාහරණය:

E: Unable to locate package xxx

මෙම දෝෂය සාමාන්‍යයෙන් apt-get update ක්‍රියාත්මක නොකළ විට හෝ පැකේජ නම වැරදි වූ විට සිදු වේ.

විසඳුම:

  • පැකේජ ස්ථාපනයට පෙර සැමවිටම apt-get update ක්‍රියාත්මක කරන්න:
    RUN apt-get update && apt-get install -y curl
    
  • පැකේජ නම් සත්‍යාපනය කරන්න සහ වැරදි ඇක්ෂර්ල් සඳහා පරීක්ෂා කරන්න

ජාල සම්බන්ධ දෝෂ

උදාහරණය:

Temporary failure resolving 'deb.debian.org'

මෙම දෝෂය බිල්ඩ් ක්‍රියාවලියේදී DNS විසඳුම් ගැටලුවක් පෙන්වයි.

විසඳුම:

  • Docker daemon නැවත ආරම්භ කිරීම මෙම ගැටලුව විසඳිය හැක:
    sudo systemctl restart docker
    
  • /etc/docker/daemon.json හි DNS සේවාදායක එකතු කිරීමෙන් Docker 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
    
  • CMD සහ ENTRYPOINT අතර වෙනස්කම් තේරුම් ගන්න සහ ඒවා සුදුසු ලෙස භාවිතා කරන්න

මෙම ගැටලු මුහුණ දී විසඳීමෙන්, ඔබගේ Dockerfile නිර්මාණ කුසලතා ස්ථිරව වැඩි දියුණු වේ. දෝෂ සිදු වූ විට, දෝෂ පණිවිඩ සැලකිල්ලෙන් කියවන්න සහ ගැටලුවට හේතු වූ උපදෙස සහ පරතරය හඳුනා ගන්න.

7. සාරාංශය

Ubuntu-අඩඋපකරණ Dockerfiles නිර්මාණය සඳහා ප්‍රධාන ඉගෙනීම්

මෙම ලිපිය Dockerfiles භාවිතයෙන් Ubuntu පරිසර නිර්මාණය කිරීම පිළිබඳ පියවරෙන් පියවර පැහැදිලි කිරීමක් සපයන අතර, මූලික සහ උසස් මාතෘකා ආවරණය කරයි. ප්‍රධාන කරුණු සමාලෝචනය කරමු:

  • Dockerfile මූලික තේරුම් ගැනීම පළමු පියවර වේ FROM , RUN , CMD , සහ ENV වැනි උපදෙස් ස්වයංක්‍රීය පරිසර නිර්මාණය සක්‍රීය කරයි.
  • Ubuntu ස්ථිර සහ නම්‍යශීලී පදනම රූපයක් එහි විස්තීර්ණ පැකේජ පද්ධතිය, විශාල පරිශීලක පදනම, සහ LTS නිකාශන එය සංවර්ධන පරිසර සඳහා ආදර්ශීය කරයි.
  • ප්‍රායෝගික පැකේජ කළමනාකරණය අවශ්‍ය මෙවලම් සහ ග්‍රන්ථාගාර ස්ථාපනයට ඉඩ සලසයි apt-get හි සුදුසු භාවිතය, කැෂ් පිරිසිදු කිරීම, සහ අන්තර්ක්‍රියාකාරී නොවන ස්ථාපනය අත්‍යවශ්‍ය වේ.
  • Python වැනි ප්‍රායෝගික පරිසර බිල්ඩ් කිරීම Dockerfiles මගින් සම්පූර්ණයෙන්ම සහාය දක්වයි pyenv , pip , සහ requirements.txt වැනි මෙවලම් පුනරාවර්තනීය සැකසුම් සහතික කරයි.
  • ගැටලු විසඳීමේ කුසලතා ස්ථිර මෙහෙයුම්වලට සෘජුව බලපායි අවසර, ජාලකරණය, සහ බිල්ඩ් කැෂ් හැසිරීම තේරුම් ගැනීම කාර්යක්ෂමතාවය බෙහෙවින් වැඩි දියුණු කරයි.

Dockerfile ඉගෙනීමේ මීළඟ පියවර

Dockerfiles භාවිතයට පුරුදු වූ පසු, ඔබට ඔබගේ කුසලතා සංවර්ධනයෙන් ඔබ්බට ටෙස්ටිං සහ නිෂ්පාදන යෙදීම් දක්වා ව්‍යාප්ත කළ හැක. පහත මාතෘකා ගවේෂණය කිරීම සලකා බලන්න:

  • Docker Compose මගින් බහු-කන්ටේනර සැකසුම් කළමනාකරණය
  • GitHub Actions සහ GitLab CI වැනි CI/CD මෙවලම් සමඟ ඒකාබද්ධ කිරීම
  • 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 ක්‍රියාත්මක නොකිරීමයි. පැකේජ් ලැයිස්තුව යාවත්කාලීන නොකළහොත්, APT අයදුම් කළ පැකේජ් සොයාගත නොහැකිය.

නිවැරදි උදාහරණය:

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

එසේම පැකේජ් නම් නිවැරදි බව සහ පරණ නොවන බව සහතික කරන්න (උදාහරණයක් ලෙස, python වෙනුවට python3 භාවිතා කරන්න).

Q3. Dockerfile එකක පරිසර විචල්‍යයන් කෙසේ සකස් කරමි?

A3. ඉදිරිපත් කිරීමේ කාලය සහ කන්ටේනර් ක්‍රියාකාරීත්වය තුළදී ලබා ගත හැකි පරිසර විචල්‍යයන් නිර්වචනය කිරීමට ENV උපදෙස භාවිතා කරන්න.

උදාහරණය:

ENV DEBIAN_FRONTEND=noninteractive

මෙය APT ස්ථාපණයන් තුළදී අන්තර්ක්‍රියාකාරී ප්‍රශ්නවලින් වළක්වා ගැනීමට සුලබව භාවිතා වේ. පරිසර විචල්‍යයන් යෙදුම් සකස් කිරීම සහ API යතුරු සඳහාද ගුණදායක වේ.

Q4. CMD සහ ENTRYPOINT අතර වෙනස කුමක්ද?

A4. දෙකම කන්ටේනරය ආරම්භ වන විට ක්‍රියාත්මක වන ආදේශ නිර්දේශ කරයි, නමුත් ඒවායේ හැසිරීම වෙනස් වේ.

ItemCMDENTRYPOINT
OverridableCan be overridden by docker runGenerally not overridden (treated as fixed command)
Use CaseDefine a default commandDefine a command that must always run

උදාහරණය:

CMD ["python3", "app.py"]
# vs
ENTRYPOINT ["python3"]
CMD ["app.py"]

පසුකාලීන අවස්ථාවේදී, docker run my-image another_script.py භාවිතා කරමින් තර්ක ලබා දිය හැකිය.

Q5. මගේ Dockerfile වෙනස්කම් පිළිබිඹු නොවන්නේ ඇයි?

A5. Docker ඉදිරිපත් කිරීමේ සංරක්ෂණය භාවිතා කරයි, එය Dockerfile සංස්කරණයෙන් පසුව පවා වෙනස් නොවූ අදියර යළි භාවිතා වීමට හේතු විය හැකිය.

විසඳුම:

docker build --no-cache -t my-image .

මෙය සම්පූර්ණ යළි-ඉදිරිපත් කිරීමක් බල කරයි සහ සියලුම වෙනස්කම් යෙදෙන බව සහතික කරයි.