Module 3 – Docker Images සහ Docker Containers

සරලව සහ පැහැදිලිව තේරුම් ගනිමු

Docker Images සහ Docker Containers කියන්නේ මොනවාද?

Docker ecosystem එකේ තියෙන වැදගත්ම concepts දෙකක් තමයි:

  • Docker Images
  • Docker Containers

Docker effectively භාවිතා කරන්න නම් මේ concepts දෙක අතර තියෙන සම්බන්ධතාවය සහ වෙනස හොඳින් තේරුම් ගන්න ඕන.

මෙම article එකෙන් අපි බලන්නේ:

  • Docker Image කියන්නේ මොකක්ද
  • Docker Container කියන්නේ මොකක්ද
  • Images සහ Containers අතර වෙනස

Docker Image කියන්නේ මොකක්ද?

Docker Image එකක් කියන්නේ Docker Container එකක් run කරන්න ඕනෑම application එකක්, library එකක්, dependency එකක් සහ configuration එකක් ඇතුළත් කරන lightweight, standalone, executable package එකක්.

සරලව කියනවා නම්:

Docker Image කියන්නේ Docker container එකක් create කරන්න භාවිතා කරන template එකක් හෝ ආකෘතියක්.

Docker image එක තුළ සාමාන්‍යයෙන් අඩංගු වෙන්නේ:

  • Application source code
  • Runtime environment (Node.js, Python වගේ)
  • Libraries සහ dependencies
  • System tools
  • Configuration settings

උදාහරණ ලෙස Docker ecosystem එකේ already available images කිහිපයක් තියෙනවා:

  • Ubuntu Image
  • Node.js Image
  • MySQL Image
  • Redis Image

මේ images භාවිතා කරලා containers create කරන්න පුළුවන්.


Docker Image වල විශේෂ ලක්ෂණ

Docker images වල වැදගත් ලක්ෂණ කිහිපයක් තියෙනවා.

1. Read-Only ආකාරයේ Template එකක්

Docker image එකක් read-only. එක modify වෙන්නේ නැහැ. Image එකෙන් container එකක් run කරනකොට changes occur වෙන්නේ container එක තුළ.

2. Layers වලින් නිර්මාණය වීම

Docker image එකක් layers කිහිපයක් එකට එකතු වෙලා build වෙනවා. Example Dockerfile එකක් බලමු.

FROM node:18

WORKDIR /app

COPY . .

RUN npm install

CMD ["node", "app.js"]

මෙහි:

  • Base image layer
  • Application files layer
  • Dependencies install layer

මේ layers එකට එකතු වෙලා final Docker image එක build වෙනවා.

3. නැවත නැවත භාවිතා කළ හැකි වීම

Docker image එකක් multiple containers run කරන්න reuse කරන්න පුළුවන්.

උදාහරණයක්:

docker run nginx
docker run nginx
docker run nginxe

මෙහි nginx image එකෙන් containers තුනක් run වෙනවා.


Docker Container කියන්නේ මොකක්ද?

Docker Container කියන්නේ Docker image එකක් run වෙන actual running environment එක.

සරලව analogy එකක් ගත්තොත්:

  • Docker Image → සැලැස්ම (Blueprint)
  • Docker Container → run වෙන application එක

Container එකක් basically isolated environment එකක්.

එහි:

  • තමන්ගේ filesystem එකක්
  • තමන්ගේ processes
  • තමන්ගේ networking configuration

තිබෙනවා.

Docker container එකක් run කරනකොට, ඒ container එකේ application එක run වෙනවා, ඒක developerගේ computer එකේ run වෙනවා, server එකේ run වෙනවා, හැම තැනම run වෙනවා.


Docker Container වල විශේෂ ලක්ෂණ

Docker container වල වැදගත් ලක්ෂණ කිහිපයක් තියෙනවා.

1. Lightweight වීම

Virtual Machines සමඟ compare කරද්දී Docker containers:

  • ඉතාම light-weight
  • ඉක්මනින් start වෙනවා
  • resources අඩුවෙන් භාවිතා කරනවා
2. Isolated Environment එකක්

Container එකක් run වුනාම:

  • වෙන containers වලට effect වෙන්නේ නැහැ
  • Host system එකට direct interference අඩුයි

මේ නිසා applications safely run කරන්න පුළුවන්.

3. Portable වීම

Docker containers run කරන්න පුළුවන්:

  • Developer computer එකේ
  • Testing server එකේ
  • Production environment එකේ

මේ සියල්ලේ same environment එකෙන් run වෙනවා.


Docker Image සහ Container අතර වෙනස

Docker concepts හොඳින් තේරුම් ගන්න මේ දෙක අතර difference එක බලමු.


                                 -----------------------------------------------------------
                                 ලක්ෂණය         Docker Image           Docker Container      
                                 -----------------------------------------------------------                   
                                 ස්වභාවය         Template එකක්          Running environment   
                                 තත්ත්වය         Static                 Running               
                                 වෙනස් කළ හැකිද  Read-only              Changes possible      
                                 භාවිතය          Container create කිරීම  Application run කිරීම 

සරලව කියනවා නම්:

Docker Image එක container එකක් build කරන්න භාවිතා කරන template එකක්. Docker Container එක image එකක් run වීමෙන් ඇතිවන environment එකක්